home *** CD-ROM | disk | FTP | other *** search
/ Amiga Games Extra 1996 September / Amiga Games Extra CD-ROM 9-1996.iso / userbox / publicdomain / vim-4.2 / doc / vim_40.txt < prev    next >
Text File  |  1996-06-16  |  95KB  |  2,342 lines

  1. *vim_40.txt*    For Vim version 4.2.  Last modification: 1996 June 16
  2.  
  3.  
  4. Welcome to Vim Version 4.0!
  5.  
  6. This document lists the differences between Vim 3.0 and Vim 4.0.
  7. See |vim_diff.txt| for a short overview.
  8. Although 4.0 is mentioned here, this is also for version 4.1, 4.2, etc..
  9.  
  10. CONTENTS:
  11.  
  12. VERSION WARNING MESSAGE                    |version_warning|
  13.  
  14. INCOMPATIBLE CHANGES                    |Incompatible_changes|
  15.     'backup' option default changed            |backup_changed|
  16.     Extension for backup file changed            |backup_extension|
  17.     Structure of swap file changed            |swapfile_changed|
  18.     "-w scriptout" argument changed            |scriptout_changed|
  19.     Backspace and Delete keys                |backspace_delete|
  20.     Escape for | changed                |escape_bar|
  21.     Key codes changed                    |key_codes_changed|
  22.     Terminal options changed                |termcap_changed|
  23.     'errorformat' option changed            |errorformat_changed|
  24.     'graphic' option gone                |graphic_option_gone|
  25.     'yankendofline' option gone                |ye_option_gone|
  26.     'icon' and 'title' default value changed        |icon_changed|
  27.     'highlight' option changed                |highlight_changed|
  28.     'tildeop' and 'weirdinvert' short names changed    |short_name_changed|
  29.     Use of "v", "V" and "CTRL-V" in Visual mode        |use_visual_cmds|
  30.     CTRL-B in Insert mode removed            |toggle_revins|
  31.  
  32. NEW AND IMPROVED FEATURES                |new_features|
  33.     New on-line help system                |new_help|
  34.     Tag support improved                |new_tags|
  35.     Command-line editing improvements            |new_commandline|
  36.     Improved indenting for C programs            |new_cindent|
  37.     Searching for words in include files        |new_include|
  38.     Word completion in Insert mode            |new_complete|
  39.     Automatic commands                    |new_autocmd|
  40.     Options                        |new_options|
  41.     Support for editing one-line paragraphs        |new_para|
  42.     Usage of key names                    |new_keys|
  43.     Viminfo                        |new_viminfo|
  44.     Compilation improvements                |compilation|
  45.     Improved (error) messages                |new_msg|
  46.     Swap file                        |new_swapfile|
  47.     Mouse support                    |new_mouse|
  48.     Graphical User Interface (GUI)            |new_gui|
  49.     Support for Windows NT and Windows 95        |new_win32|
  50.     Support for OS/2                    |new_os2|
  51.     Support for MiNT                    |new_mint|
  52.     Miscellaneous                    |new_misc|
  53.  
  54. VI COMPATIBILITY IMPROVEMENTS                |vi_compat|
  55.  
  56. BUG FIXES                        |bug_fixes|
  57.  
  58.  
  59. VERSION WARNING MESSAGE                    *version*
  60. =======================                    *version_warning*
  61.  
  62. If you got the message
  63.  
  64.     No ":version 4.0" command found in any .vimrc
  65.  
  66. when you started Vim, you should add this line to your vimrc:
  67.  
  68.     version 4.0                    |:version|
  69.  
  70. But read the information below first!
  71.  
  72.  
  73. INCOMPATIBLE CHANGES                    *Incompatible_changes*
  74. ====================
  75.  
  76. This section is important for everybody upgrading from 3.0 to 4.0.  Read it
  77. carefully to avoid unexpected problems.
  78.  
  79.  
  80. 'backup' option default changed                *backup_changed*
  81. -------------------------------
  82.  
  83. The default value for 'backup' used to be on.  This resulted in a backup file
  84. being made when the original file was overwritten.
  85.  
  86. Now the default for 'backup' is off.  As soon as the writing of the file has
  87. succesfully finished, the backup file is deleted.  If you want to keep the
  88. backup file, set 'backup' on in your vimrc.  The reason for this change is
  89. that many people complained that leaving a backup file behind is not
  90. Vi-compatible.                        |'backup'|
  91.  
  92.  
  93. Extension for backup file changed            *backup_extension*
  94. ---------------------------------
  95.  
  96. The extension for the backup file used to be ".bak".  Since other programs
  97. also use this extension and some users make copies with this extension, it was
  98. changed to the less obvious "~".  Another advantage is that this takes less
  99. space, which is useful when working on a system with short file names.  For
  100. example, on MS-DOS the backup files for "longfile.c" and "longfile.h" would
  101. both become "longfile.bak"; now they will be "longfile.c~" and "longfile.h~".
  102.  
  103. If you prefer to use ".bak", you can set the 'backupext' option:
  104.     :set bex=.bak                    |'backupext'|
  105.  
  106.  
  107. Structure of swap file changed                *swapfile_changed*
  108. ------------------------------
  109.  
  110. The contents of the swap file were extended with several parameters.  Vim
  111. stores the user name and other information about the edited file to make
  112. recovery more easy and to be able to know where the swap file comes from.  The
  113. first part of the swap file can now be understood on a machine with a
  114. different byte order or sizeof(int).  When you try to recover a file on such a
  115. machine, you will get an error message that this is not possible.
  116.  
  117. Because of this change, swap files cannot be exchanged between 3.0 and 4.0.
  118. If you have a swap file from a crashed session with 3.0, use Vim 3.0 to
  119. recover the file---don't use 4.0.            |swap_file|
  120.  
  121.  
  122. "-w scriptout" argument changed                *scriptout_changed*
  123. -------------------------------
  124.  
  125. "vim -w scriptout" used to append to the scriptout file.  Since this was
  126. illogical, it now creates a new file.  An existing file is not overwritten
  127. (to avoid destroying an existing file for those who rely on the appending).
  128.                             |-w|
  129.  
  130.  
  131. Backspace and Delete keys                *backspace_delete*
  132. -------------------------
  133.  
  134. In 3.0 both the delete key and the backspace key worked as a backspace in
  135. insert mode; they deleted the character to the left of the cursor.  In 4.0 the
  136. delete key has a new function: it deletes the character under the cursor, just
  137. like it does on the command line.  If the cursor is after the end of the line
  138. and 'bs' is set, two lines are joined.            |<Del>| |i_<Del>|
  139.  
  140. In 3.0 the backspace key was always defined as CTRL-H and delete as CTRL-?.
  141. In 4.0 the code for the backspace and delete key is obtained from termcap or
  142. termlib, and adjusted for the "stty erase" value on Unix.  This helps people
  143. who define the erase character according to the keyboard they are working on.
  144.                             |<BS>| |i_<BS>|
  145.  
  146. If you prefer backspace and delete in Insert mode to have the old behaviour,
  147. put this line in your vimrc:
  148.  
  149.     inoremap ^? ^H
  150.  
  151. And you may also want to add these, to fix the values for <BS> and <Del>:
  152.  
  153.     set t_kb=^H
  154.     set t_kD=^?
  155.  
  156. (Enter ^H with CTRL-V CTRL-H and ^? with CTRL-V CTRL-? or <Del>.)
  157.  
  158. If the value for t_kb is correct, but the t_kD value is not, use the ":fixdel"
  159. command.  It will set t_kD according to the value of t_kb.  This is useful if
  160. you are using several different terminals.        |:fixdel|
  161.  
  162. When ^H is not recognized as <BS> or <Del>, it is used like a backspace.
  163.  
  164.  
  165. Escape for | changed                    *escape_bar*
  166. --------------------
  167.  
  168. When the 'b' flag is present in 'cpoptions', the backslash cannot be used to
  169. escape '|' in mapping and abbreviate commands, only CTRL-V can.  This is
  170. Vi-compatible.  If you work in Vi-compatible mode and had used "\|" to include
  171. a bar in a mapping, this needs to be replaced by "^V|".  See |:bar|.
  172.  
  173.  
  174. Key codes changed                    *key_codes_changed*
  175. -----------------
  176.  
  177. The internal representation of key codes has changed dramatically.  In 3.0 a
  178. one-byte code was used to represent a key.  This caused problems with
  179. different characters sets that also used these codes.  In 4.0 a three-byte
  180. code is used that cannot be confused with a character.        |key_notation|
  181.  
  182. If you have used the single-byte key codes in your vimrc for mappings, you
  183. will have to replace them with the 4.0 codes.  Instead of using the three-byte
  184. code directly, you should use the symbolic representation for this in <>.  See
  185. the table below.  The table also lists the old name, as it was used in the 3.0
  186. documentation.
  187.  
  188. The key names in <> can be used in mappings directly.  This makes it possible
  189. to copy/paste examples or type them literally.  The <> notation has been
  190. introduced for this |<>|.  The 'B' and '<' flags must not be present in
  191. 'cpoptions' to enable this to work |'cpoptions'|.
  192.  
  193. old name    new name      old code    old MS-DOS code
  194.                 hex    dec    hex    dec
  195. <ESC>        <Esc>
  196. <TAB>        <Tab>
  197. <LF>        <NL> <NewLine> <LineFeed>
  198. <SPACE>        <Space>
  199. <NUL>        <Nul>
  200. <BELL>        <Bell>
  201. <BS>        <BS> <BackSpace>
  202. <INSERT>    <Insert>
  203. <DEL>        <Del> <Delete>
  204. <HOME>        <Home>
  205. <END>        <End>
  206. <PAGE_UP>    <PageUp>
  207. <PAGE_DOWN>    <PageDown>
  208.  
  209. <C_UP>        <Up>        0x80    128    0xb0    176
  210. <C_DOWN>    <Down>        0x81    129     0xb1    177
  211. <C_LEFT>    <Left>        0x82    130     0xb2    178
  212. <C_RIGHT>    <Right>        0x83    131     0xb3    179
  213. <SC_UP>        <S-Up>        0x84    132     0xb4    180
  214. <SC_DOWN>    <S-Down>    0x85    133     0xb5    181
  215. <SC_LEFT>    <S-Left>    0x86    134     0xb6    182
  216. <SC_RIGHT>    <S-Right>    0x87    135     0xb7    183
  217.  
  218. <F1>        <F1>        0x88    136     0xb8    184
  219. <F2>        <F2>        0x89    137     0xb9    185
  220. <F3>        <F3>        0x8a    138     0xba    186
  221. <F4>        <F4>        0x8b    139     0xbb    187
  222. <F5>        <F5>        0x8c    140     0xbc    188
  223. <F6>        <F6>        0x8d    141     0xbd    189
  224. <F7>        <F7>        0x8e    142     0xbe    190
  225. <F8>        <F8>        0x8f    143     0xbf    191
  226. <F9>        <F9>        0x90    144     0xc0    192
  227. <F10>        <F10>        0x91    145     0xc1    193
  228.  
  229. <SF1>        <S-F1>        0x92    146     0xc2    194
  230. <SF2>        <S-F2>        0x93    147     0xc3    195
  231. <SF3>        <S-F3>        0x94    148     0xc4    196
  232. <SF4>        <S-F4>        0x95    149     0xc5    197
  233. <SF5>        <S-F5>        0x96    150     0xc6    198
  234. <SF6>        <S-F6>        0x97    151     0xc7    199
  235. <SF7>        <S-F7>        0x98    152     0xc8    200
  236. <SF8>        <S-F8>        0x99    153     0xc9    201
  237. <SF9>        <S-F9>        0x9a    154     0xca    202
  238. <SF10>        <S-F10>        0x9b    155     0xcb    203
  239.  
  240. <HELP>        <Help>        0x9c    156     0xcc    204
  241. <UNDO>        <Undo>        0x9d    157     0xcd    205
  242.  
  243.         (not used)    0x9e    158     0xce    206
  244.         (not used)    0x9f    159     0xcf    207
  245.  
  246.  
  247. Terminal options changed                *termcap_changed*
  248. ------------------------
  249.  
  250. The names of the terminal options have been changed to match the termcap names
  251. of these options.  All terminal options now have the name t_xx, where xx is
  252. the termcap name.  Normally these options are not used, unless you have a
  253. termcap entry that is wrong or incomplete, or you have set the highlight
  254. options to a different value.                |terminal_options|
  255.  
  256. Note that for some keys there is no termcap name.  Use the <> type of name
  257. instead, which is a good idea anyway.
  258.  
  259. Note that "t_ti" has become "t_mr" (invert/reverse output) and "t_ts" has
  260. become "t_ti" (init terminal mode).  Be careful when you use "t_ti"!
  261.  
  262. old name    new name    meaning
  263. t_cdl        t_DL        delete number of lines        *t_cdl*
  264. t_ci        t_vi        cursor invisible        *t_ci*
  265. t_cil        t_AL        insert number of lines        *t_cil*
  266. t_cm        t_cm        move cursor
  267. t_cri        t_RI        cursor number of chars right    *t_cri*
  268. t_cv        t_ve        cursor visible            *t_cv*
  269. t_cvv        t_vs        cursor very visible        *t_cvv*
  270. t_dl        t_dl        delete line
  271. t_cs        t_cs        scroll region
  272. t_ed        t_cl        clear display            *t_ed*
  273. t_el        t_ce        clear line            *t_el*
  274. t_il        t_al        insert line            *t_il*
  275.         t_da        display may be retained above the screen
  276.         t_db        display may be retained below the screen
  277. t_ke        t_ke        put terminal out of keypad transmit mode
  278. t_ks        t_ks        put terminal in keypad transmit mode
  279. t_ms        t_ms        save to move cursor in highlight mode
  280. t_se        t_se        normal mode (undo t_so)
  281. t_so        t_so        shift out (standout) mode
  282. t_ti        t_mr        reverse highlight
  283. t_tb        t_md        bold mode            *t_tb*
  284. t_tp        t_me        highlight end            *t_tp*
  285. t_sr        t_sr        scroll reverse
  286. t_te        t_te        out of termcap mode
  287. t_ts        t_ti        into termcap mode        *t_ts*
  288. t_vb        t_vb        visual bell
  289. t_csc        t_CS        cursor is relative to scroll region *t_csc*
  290.  
  291. t_ku    t_ku    <Up>        arrow up
  292. t_kd    t_kd    <Down>        arrow down
  293. t_kr    t_kr    <Right>        arrow right
  294. t_kl    t_kl    <Left>        arrow left
  295. t_sku        <S-Up>        shifted arrow up        *t_sku*
  296. t_skd        <S-Down>    shifted arrow down        *t_skd*
  297. t_skr    t_%i    <S-Right>    shifted arrow right        *t_skr*
  298. t_skl    t_#4    <S-Left>    shifted arrow left        *t_skl*
  299. t_f1    t_k1    <F1>        function key 1            *t_f1*
  300. t_f2    t_k2    <F2>        function key 2            *t_f2*
  301. t_f3    t_k3    <F3>        function key 3            *t_f3*
  302. t_f4    t_k4    <F4>        function key 4            *t_f4*
  303. t_f5    t_k5    <F5>        function key 5            *t_f5*
  304. t_f6    t_k6    <F6>        function key 6            *t_f6*
  305. t_f7    t_k7    <F7>        function key 7            *t_f7*
  306. t_f8    t_k8    <F8>        function key 8            *t_f8*
  307. t_f9    t_k9    <F9>        function key 9            *t_f9*
  308. t_f10    t_k;    <F10>        function key 10            *t_f10*
  309. t_sf1        <S-F1>        shifted function key 1        *t_sf1*
  310. t_sf2        <S-F2>        shifted function key 2        *t_sf2*
  311. t_sf3        <S-F3>        shifted function key 3        *t_sf3*
  312. t_sf4        <S-F4>        shifted function key 4        *t_sf4*
  313. t_sf5        <S-F5>        shifted function key 5        *t_sf5*
  314. t_sf6        <S-F6>        shifted function key 6        *t_sf6*
  315. t_sf7        <S-F7>        shifted function key 7        *t_sf7*
  316. t_sf8        <S-F8>        shifted function key 8        *t_sf8*
  317. t_sf9        <S-F9>        shifted function key 9        *t_sf9*
  318. t_sf10        <S-F10>        shifted function key 10        *t_sf10*
  319. t_help    t_%1    <Help>        help key            *t_help*
  320. t_undo    t_&8    <Undo>        undo key            *t_undo*
  321.  
  322.  
  323. 'errorformat' option changed                *errorformat_changed*
  324. ----------------------------
  325.  
  326. 'errorformat' can now contain several formats, separated by commas.  The first
  327. format that matches is used.  The default values have been adjusted to catch
  328. the most common formats.                |errorformat|
  329.  
  330. If you have a format that contains a comma, it needs to be preceded with a
  331. backslash.  Type two backslashes, because the ":set" command will eat one.
  332.  
  333.  
  334. 'graphic' option gone                    *graphic_option_gone*
  335. ---------------------
  336.  
  337. The 'graphic' option was used to make the characters between <~> and 0xa0
  338. display directly on the screen.  Now the 'isprint' option takes care of this
  339. with many more possibilities.  The default setting is the same; you only need
  340. to look into this if you previously set the 'graphic' option in your vimrc.
  341.                             |'isprint'|
  342.  
  343.  
  344. 'yankendofline' option gone                *ye_option_gone*
  345. ---------------------------
  346.  
  347. The 'yankendofline' option has been removed.  Instead you can just use
  348.     :map Y y$
  349.  
  350.  
  351. 'icon' and 'title' default value changed        *icon_changed*
  352. ----------------------------------------
  353.  
  354. The 'title' option is now only set by default if the original title can be
  355. restored.  Avoids 'Thanks for flying Vim" titles.  If you want them anyway,
  356. put ":set title" in your vimrc.                |'title'|
  357.  
  358. The default for 'icon' now depends on the possibility of restoring the
  359. original value, just like 'title'.  If you don't like your icon titles to be
  360. changed, add this line to your vimrc:            |'icon'|
  361.     :set noicon
  362.  
  363.  
  364. 'highlight' option changed                *highlight_changed*
  365. --------------------------
  366.  
  367. The 'i' flag now means italic highlighting, instead of invert.  The 'r' flag
  368. is used for reverse highlighting, which is what 'i' used to be.  Normally you
  369. won't see the difference, because italic mode is not supported on most
  370. terminals and reverse mode is used as a fallback.    |'highlight'|
  371.  
  372. When an occasion is not present in 'highlight', use the mode from the default
  373. value for 'highlight', instead of reverse mode.
  374.  
  375.  
  376. 'tildeop' and 'weirdinvert' short names changed        *short_name_changed*
  377. -----------------------------------------------
  378.  
  379. Renamed 'to' (abbreviation for 'tildeop') to 'top'.    |'tildeop'|
  380. Renamed 'wi' (abbreviation for 'weirdinvert') to 'wiv'.    |'weirdinvert'|
  381.  
  382. This was done because Vi uses 'wi' as the short name for 'window' and 'to' as
  383. the short name for 'timeout'.  This means that if you try setting these
  384. options, you won't get an error message, but the effect will be different.
  385.  
  386.  
  387. Use of "v", "V" and "CTRL-V" in Visual mode        *use_visual_cmds*
  388. -------------------------------------------
  389.  
  390. In Visual mode, "v", "V", and "CTRL-V" used to end Visual mode.  Now this
  391. happens only if the Visual mode was in the corresponding type.  Otherwise the
  392. type of Visual mode is changed.  Now only ESC can be used in all circumstances
  393. to end Visual mode without doing anything.        |v_V|
  394.  
  395.  
  396. CTRL-B in Insert mode removed                *toggle_revins*
  397. -----------------------------
  398.  
  399. CTRL-B in Insert mode used to toggle the 'revins' option.  If you don't know
  400. this and accidentally hit CTRL-B, it is very difficult to find out how to undo
  401. it.  Since hardly anybody uses this feature, it is disabled by default.  If
  402. you want to use it, define RIGHTLEFT in feature.h before compiling. |'revins'|
  403.  
  404.  
  405. NEW AND IMPROVED FEATURES                *new_features*
  406. =========================
  407.  
  408. New on-line help system                    *new_help*
  409. -----------------------
  410.  
  411. Help is displayed in a window.  The usual commands can be used to move around,
  412. search for a string, etc.                |online_help|
  413.  
  414. All the documentation is in the help system: index, reference, etc.
  415.  
  416. Tags can be used to jump around, just like hypertext links.
  417.  
  418. The ":help" command accepts an argument that can be the name of a command.  A
  419. help window is opened and the cursor is positioned at the help for that
  420. command.  The argument is looked up in the help tags file, using a fuzzy match
  421. algorithm.  The best match is used.            |:help|.
  422.  
  423. Added 'helpheight' option: Minimal height of a new help window.
  424.  
  425. Made <F1> the default help key for all systems.
  426.  
  427. Display "[help]" in the status line of a help window.
  428.  
  429. Help files are always started in readonly mode.
  430.  
  431.  
  432. Tag support improved                    *new_tags*
  433. --------------------
  434.  
  435. Added support for static tags, "file:tag ...".  See |static_tag|.
  436.  
  437. Use the tag with best match: First tag in current file, then global tag in
  438. other file, finally static tag in other file.  Match with same case always
  439. goes before match with case ignored.
  440.  
  441. A few attempts are made to find a tag.  See |tag_priority|.
  442.  
  443. Added ":stag", same as ":tag", but also split window.  See |:stag|.
  444.  
  445. When deleting/inserting lines, the marks in the tag stack are adjusted to
  446. reflect this change.
  447.  
  448. Command-line completion for tags is improved.
  449.  
  450. Tags are allowed to start with a number.
  451.  
  452. For file names that start with "./" in the 'tags' option, the '.' is replaced
  453. with the path of the current file.  This makes it possible to use a tags file
  454. in the same directory as the file being edited.
  455.  
  456. When comparing the current file name with the file name for the tag, consider
  457. the path too, otherwise tag in wrong directory could be used.
  458.  
  459. Added support for Emacs style tags file (if "EMACS_TAGS" has been defined at
  460. compile time).  Now Vim is one of the few editors that supports both tag file
  461. formats!
  462.  
  463. When executing the search command to find the pattern from a tags file, the
  464. first try is with matching case; if this fails, try again ignoring case.
  465.  
  466. The 't' flag in 'cpoptions' can be set to remember the search pattern used for
  467. tag search.  A following "n" will use it.  This is Vi-compatible, but it is
  468. rarely useful.
  469.  
  470. Added CTRL-] command to Visual mode: :ta to highlighted text (only when no
  471. more than one line is highlighted).  Same for "K": Use keyword program for
  472. highlighted text.                    |v_CTRL-]|
  473.  
  474.  
  475. Command-line editing improvements            *new_commandline*
  476. ---------------------------------
  477.  
  478. There is no longer one command-line history.  The search strings are now in a
  479. separate list, where they can be accessed only when entering a search string.
  480.                             |cmdline_history|
  481.  
  482. The search string for a tag search is always put in the search history; this
  483. does not depend on the 't' flag in 'cpoptions'.
  484.  
  485. Only command lines and search strings where at least one character was really
  486. typed by the user are put into the history.
  487.  
  488. For command-line history, exchanged meaning of <Up> and <S-Up> keys, <Down>
  489. and <S-Down> keys.  That is more like other uses of command-line history
  490. (shell) and some keyboards don't have shifted cursor and page keys, which
  491. makes it impossible for this feature to be used.    |c_<Up>|
  492.  
  493. Put all search strings, including those from "*" and "#" commands, in the
  494. search history.
  495.  
  496. Added completion of old settings.  For example: ":set hf=<Tab>".  Makes it
  497. possible to change an option without completely retyping it.  Backslashes are
  498. inserted where necessary.
  499.  
  500. Fixed command-line completion when entering the range of lines.
  501.  
  502. When completing file names, insert a backslash before <Space>, '\', '#' and
  503. '%' to avoid their special meaning.
  504.  
  505. When a command-line is already in the history, the old entry is removed.  When
  506. searching through the command history, the entry from which it was started is
  507. remembered.
  508.  
  509. Added paging for showing matches on the command line.  This can also be
  510. interrupted.
  511.  
  512. Added CTRL-R command on command-line: Insert contents of register.
  513. Output '"' after CTRL-R command, to indicate that a register name has to be
  514. entered.                        |c_CTRL-R|
  515.  
  516.  
  517. Improved indenting for C programs            *new_cindent*
  518. ---------------------------------
  519.  
  520. The 'cindent' option and friends have been added.  It automates the indenting
  521. for C programs.  It is not 100% correct in all cases, but good enough for
  522. normal editing.                        |'cindent'|
  523.  
  524. The "=" operator can be used to indent some lines of text with the internal
  525. indenting algorithm; it is used when 'equalprg' is empty, which is the default
  526. now (most implementations of the "indent" program can't work as a filter
  527. anyway).                        |=|
  528.  
  529. Added automatic formatting of comments and the 'comments' option.
  530.                             |format_comments|
  531.  
  532. The 'formatoptions' option can be used to change when formatting is done and
  533. to select the formatting method.
  534.  
  535. The 'smartindent' option is still there; it's useful for non-C code and C code
  536. that doesn't conform to what is supported by 'cindent'.
  537.  
  538. Improvements for 'smartindent':                |'smartindent'|
  539. - When entering '{', indent is not rounded to 'shiftwidth'.
  540. - When entering '}' and the matching '{' is preceded with a '(', set indent to
  541.   the line containing the matching ')'
  542. - Ignore lines starting with '#'.
  543. - When typing '{' after "O", delete one indent, unless indent of previous line
  544.   is less or equal.
  545. - Don't add an indent when inserting a NL before a '{'.
  546. - Do smart indenting after "cc" or "S".
  547.  
  548. Fixed bug where } would only be smart-indented to line up with the line
  549. containing the { when there was some spacing before the }.
  550.  
  551. The 'cinwords' option can be set to keywords that start an extra indent for
  552. 'smartindent' and 'cindent' mode.  This used to be a table in the C code; now
  553. it is configurable.  The defaults are the same, and it should make no
  554. difference unless you change the 'cinw' option.        |'cinwords'|
  555.  
  556.  
  557. Searching for words in include files            *new_include*
  558. ------------------------------------
  559.  
  560. Commands have been added that not only search in the current file, but also in
  561. included files.  The 'include' option can be set to a pattern that includes a
  562. file (the default is for C programs).            |include_search|
  563.  
  564. The search can be done for identifiers with "[i" or defines with "[d".  Use
  565. ":checkpath" to check if included files can be found.    |:checkpath|
  566.  
  567. A jump to the first found match can be done with "[ CTRL-I" or "[ CTRL-D".
  568. This is very useful to jump to the definition of a variable.  |[_CTRL-I|
  569.  
  570. Added ":isearch", ":ilist", ":ijump", ":isplit", ":dsearch, etc.  Allows for
  571. an identifier to be found that is not in the text yet.    |:isearch|
  572.  
  573.  
  574. Word completion in Insert mode                *new_complete*
  575. ------------------------------
  576.  
  577. In Insert mode the word before the cursor can be completed with CTRL-N and
  578. CTRL-P.  There used to be mappings for this, but the internal implementation
  579. has better support for errors, ignores duplicates, etc.  |compl_current|
  580.  
  581. CTRL-X mode has been added.  It is a sub-mode in Insert mode, where commands
  582. can be used to scroll the text up or down, |i_CTRL-X_CTRL-E|, and completion
  583. can be done is several ways.                |ins_completion|
  584.  
  585. Completion can be done from a dictionary, defined with 'dictionary'.  This is
  586. very useful when typing long words.            |i_CTRL-X_CTRL-K|
  587.  
  588. In C programs completion can be done from included files.  This is very useful
  589. when typing long function or structure names, e.g., for X windows.
  590.                             |i_CTRL-X_CTRL-I|
  591.  
  592. There is also completion for whole lines |i_CTRL-X_CTRL-L|, tags
  593. |i_CTRL-X_CTRL-]|, file names |i_CTRL-X_CTRL-F|, and defines |i_CTRL-X_CTRL-D|.
  594.  
  595. Added 'infercase' option.  When doing keyword completion in Insert mode, and
  596. 'ignorecase' is also on, the case of the match is adjusted.  |ins_completion|
  597.  
  598.  
  599. Automatic commands                    *new_autocmd*
  600. ------------------
  601.  
  602. On certain events a set of commands can be executed, depending on the file
  603. name.  Supported events are starting to edit a file, moving to another buffer,
  604. moving to another window, etc.  This can be used to set 'cindent' on for
  605. C-code files only, set 'dictionary' depending on the type of file, set
  606. mappings for certain file types, edit compressed files, etc.  |autocommand|.
  607.  
  608. Added ":normal[!] {command}", execute Normal mode command from cmdline.
  609. Useful for autocommands.  Use with care!        |:normal|
  610.  
  611.  
  612. Text objects                        *new_textobj*
  613. ------------
  614.  
  615. After an operator and in Visual mode, text object commands can be used to
  616. select a word, line, or paragraph.              |object_select|.
  617. a    word object
  618. A    WORD object
  619. s    sentence object
  620. p    paragraph object
  621. S    object between '(' and ')'
  622. P    object between '{' and '}'
  623.  
  624. A few examples:
  625. "da"     delete the word under cursor
  626. "vPPP"    select blocks
  627. "yP"    yank the current block
  628. ">P"    increase the indent for the current block
  629.  
  630. The space after or before the object is included.
  631.  
  632.  
  633. Options                            *new_options*
  634. -------
  635.  
  636. Allow white space between option name and following character.  ":set ai  ?"
  637. works now.
  638.  
  639. Added '&' after option: reset to default value.  Added '!' after boolean
  640. option: invert value.                    |set_option|
  641.  
  642. For setting numeric options, hex and octal can be used.
  643.  
  644. When setting an option that is a list of flags, give an error messages for
  645. illegal characters.  Also for 'highlight' option.
  646.  
  647. Environment variables in options are now replaced at any position, not just at
  648. the start.                        |:set_env|
  649.  
  650. For string options, a Tab ends the string; this is Vi-compatible.  When
  651. setting a hidden string option, skip backslashed blanks.  When expanding the
  652. value of a string option, insert a backslash before a Tab.  Updated makeset()
  653. and putescstr() for putting a backslash before the Tab.    |:set|
  654.  
  655. Names in 'tags', 'path', 'dictionary', and 'suffixes' options can also be
  656. separated with commas.  Commas in environment variables and file names are no
  657. longer allowed.  A comma can be included in these options by preceding it with
  658. a backslash.  Spaces after a comma are ignored.        |'tags'|
  659.  
  660. Added the 'shortmess' option.  It is a list of flags that can be used to
  661. shorten the messages that are given when reading or writing a file, avoiding
  662. the "Hit return to continue" prompt.
  663. When 'terse' is set, 's' flag is added to 'shortmess'.  When 'terse' is reset,
  664. 's' flag is removed from 'shortmess'.            |'shortmess'|
  665.  
  666. Added 'scrolloff' option: Make that many lines of context visible around the
  667. cursor.  If "so=999", the cursor line is always in the middle of the window.
  668.                             |'scrolloff'|
  669.  
  670. Added 'ttybuiltin' option: try builtin termcaps before external ones; default:
  671. on.  When a terminal is known both in the builtin termcap and in the external
  672. one, use entries from both.  Which entry is used first depends on
  673. 'ttybuiltin'.                        |'ttybuiltin'|
  674.  
  675. Added 'ttimeoutlen' option: Like 'timeoutlen' but for key codes only.  When
  676. set to negative number (which is the default), 'timeoutlen' is used.
  677.                             |'ttimeoutlen'|
  678.  
  679. Implemented incremental search; use 'incsearch' option to switch it on.
  680.                             |'incsearch'|
  681.  
  682. Added options for adjusting character set and characters in identifiers:
  683. 'isident' - Characters in identifiers            |'isident'|
  684. 'isprint' - Characters that can be displayed directly    |'isprint'|
  685. 'iskeyword' - Characters that are in (key)words        |'iskeyword'|
  686. 'isfname' - Characters that can be in a file name    |'isfname'|
  687.  
  688. Increased default for 'undolevels' for Unix and Win32 from 100 to 1000.
  689.                             |'undolevels'|
  690.  
  691. Changed 'directory' and 'backupdir' into a list of paths.  '.' is the same
  692. directory as the file.  'backupdir' now also works for non-Unix systems.  No
  693. need for weird ">" character to avoid current dir.  If ">" has been given
  694. anyway, it is automatically removed (for backwards compatibility with 3.0).
  695. Made default for 'directory' ".,~/tmp,/tmp".        |'directory'|
  696. Changed default for 'backupdir'.  Used to be ".", now it's ".,~" for Unix;
  697. likewise for other systems.  Helps when current directory is not writable (but
  698. the file is) and 'writebackup' is set.             |'backupdir'|
  699.  
  700.  
  701. Changed default for 'keywordprg' to "man" (except on MS-DOS or Win32); much
  702. more useful for most of us.  When 'keywordprg' is empty, ":help" is used, get
  703. help for word under the cursor.                |'keywordprg'|
  704.  
  705. Added the 'startofline' option.  When off, a lot of commands that move the
  706. cursor up or down don't put the cursor on the first non-blank on the line.
  707. Example: This makes CTRL-F followed by CTRL-B keep the cursor in the same
  708. column.                            |'startofline'|
  709.  
  710. Added options 'flash' and 'novice' for Vi compatibility; they are not used.
  711.                             |'flash'| |'novice'|
  712.  
  713. Accept special key sequence, e.g., <Tab>, when setting 'wildchar'.
  714. Give error message when setting 'wildchar' option to non-number.
  715.                             |'wildchar'|
  716.  
  717. Added types to 'highlight' option:            |'highlight'|
  718.   m   for -- more -- message
  719.   t   for titles
  720.   n   for the line number that is shown with the ":number" command.
  721.   8   for meta keys
  722.   w   for "search hit TOP .." messages
  723.   M   for mode message (e.g., "-- INSERT --").
  724.  
  725. When filtering, use the 'shellredir' option to redirect the output.  When
  726. possible, 'shellredir' is initialized to include stderr. |'shellredir'|
  727.  
  728. Moved initialization of 'shellpipe' and 'shellredir' to after other
  729. initializations, so that they work correctly when 'shell' option is set.
  730.                             |'shellpipe'|
  731.  
  732. Added '2' to 'formatoptions': 'Q' will keep the indent of the second line of a
  733. paragraph.                        |'formatoptions'|
  734.  
  735. Added 'maxmapdepth' option: maximum recursiveness of mapping.
  736.                             |'maxmapdepth'|
  737.  
  738. Added 'smartcase' option: Don't ignore case if a typed search pattern contains
  739. uppercase characters.                    |'smartcase'|
  740.  
  741. Added 'langmap' option, for those who put their keyboard in language mode,
  742. e.g., Greek.  Only if HAVE_LANGMAP defined at compile time. |'langmap'|
  743.  
  744. Changed default for 'errorfile' option from "errors" to "errors.vim", to
  745. reduce the risk of accidently overwriting an existing file. |'errorfile'|
  746.  
  747. Changed 'whichwrap' into a string option.  When setting it to a number, it is
  748. automatically converted, for backwards compatibility with 3.0. |'whichwrap'|
  749.  
  750. Expand environment options for 'term'; allows ":set term=$TERM". |'term'|
  751.  
  752. Replace 'nobuf' by 'writedelay' ('wd'), time to delay writes by.  Makes it
  753. possible to reduce the writing speed to almost nothing. |'writedelay'|
  754.  
  755. Added 's' and 'S' flags to 'cpoptions', influence the behaviour of options for
  756. a buffer: Copy when created, copy when first entered, or copy every time.
  757. Compatible with version 3.0 by default, compatible with Vi when 'S' included.
  758.                             |'cpoptions'|
  759.  
  760. When 'bin' option is set, save the values of the options that are set to 0.
  761. Restore the values when 'bin is reset.            |'bin'|
  762.  
  763. Added 'ttyscroll' option: Maximum number of screen lines to do scroll with.
  764. When trying to scroll more lines, redraw the window.    |'ttyscroll'|
  765.  
  766. Added 'modified' option.  It's now possible to force a file to be modifed or
  767. not modified.                        |'modified'|
  768.  
  769.  
  770. Support for editing one-line paragraphs            *new_para*
  771. ---------------------------------------
  772.  
  773. Sometimes it is useful to keep a paragraph as a single long line.  A few
  774. facilities have been added to make it easier to edit this text.
  775.  
  776. When the 'linebreak' option is set, long lines are broken at a convenient
  777. character.  This can be defined with the 'breakat' option.  By default, this
  778. is " ^I!@*-+_;:,./?".                    |'linebreak'|
  779.  
  780. The 'showbreak' option can be set to the string to display on continuation
  781. lines.  This makes it easy to see which lines have been broken.
  782.                             |'showbreak'|
  783.  
  784. The commands "gk", "gj", "g0", "g^" and "g$" have been added: Move a screen
  785. line.  They differ from "k", "j", etc. when lines wrap. |gk| |g0|
  786.  
  787.  
  788. Usage of key names                    *new_keys*
  789. ------------------
  790.  
  791. Special keys now all have a name like <Up>, <End>, <C-S>, etc.  This name is
  792. used for mappings, in listings, and many other things.    It can be disabled by
  793. adding the '<' flag in 'cpoptions'.  |key_notation|
  794.  
  795. For keys that don't have a <> name, but do have a termcap name, the <t_xx>
  796. form can be used.  The "xx" entry from the termcap is used. |terminal_options|
  797.  
  798. Show meta keys in mappings as M-key.  Use highlight option '8' for higlighting
  799. the meta keys.                        |meta|
  800.  
  801. Added a few special keys.
  802. <PageUp> and <PageDown> work like CTRL-B and CTRL-F.    |<PageUp>| |<PageDown>|
  803. <Home> goes to column one, <End> goes to end of line, in Insert and Normal
  804. mode.                            |<Home>| |<End>|
  805. <Insert> in normal mode starts Insert mode; in insert/replace mode, toggles
  806. between insert and replace mode; in command-line editing, toggles between
  807. insert and overstrike.            |<Insert>| |i_<Insert>| |c_<Insert>|
  808.  
  809. It is now possible to use both <F11> and <S-F1> (they used to be the same
  810. key).                            |function-key|
  811.  
  812.  
  813. Viminfo                            *new_viminfo*
  814. -------
  815.  
  816. A lot of the history that is kept in Vim (command-line history, marks,
  817. registers, etc) can be stored in a viminfo file.  It is read on startup,
  818. restoring your last environment.            |viminfo_file|.
  819.  
  820.  
  821. Compilation improvements                *compilation*
  822. ------------------------
  823.  
  824. The Unix version has a completely different Makefile.  Autoconf is used to
  825. adjust to different Unix flavors.  Prototypes for functions are obtained from
  826. include files, missing prototypes are used from osdef.h.  It should be much
  827. more straightforward to compile Vim on a Unix system.    |vim_unix.txt|
  828.  
  829. The INSTALL file now contains instructions for compiling.
  830.  
  831. In 3.0 you needed an Amiga C compiler to generate prototypes.  Now it can be
  832. done on Unix too, by using cproto.
  833.  
  834. A lot of warning messages for GCC have been removed.
  835.  
  836. A makefile target, 'make shadow', helps for building Vim for multiple machines
  837. in the same source tree.  It is a poor man's VPATH---but much more portable
  838. and flexible than any trick that gmake could perform: It creates a
  839. subdirectory called shadow containing all the required symbolic links.  For
  840. example, try 'make shadow; mv shadow sun4-gcc; cd sun4-gcc; ./configure'
  841.  
  842.  
  843. Improved (error) messages                *new_msg*
  844. -------------------------
  845.  
  846. Give error messages that includes the command line for ":" commands that are
  847. not typed by the user.  Changed "Invalid command" message into "<command>: Not
  848. an editor command".
  849.  
  850. When an error message is given while sourcing, starting up, executing
  851. autocommands, or modelines, the source of the error and line number are
  852. mentioned.
  853.  
  854. Don't sleep after giving an error message.  Error messages now never overwrite
  855. other messages and each other.
  856.  
  857. Distinguish between an unimplemented Ex command and an unrecognized command
  858. in the error message.
  859.  
  860. When jumping to file under cursor, give proper error message instead of beep.
  861.                             |gf|
  862.  
  863. Changed the displaying of messages for many commands.  Makes ":1p|2p" work.
  864. Avoids having to type some extra returns.
  865.  
  866. Added error message for using '!' in the command-line where it is not allowed.
  867.  
  868. Added wait_return() when filtering finds an error while executing the shell
  869. command.  Makes it possible to read the error message.
  870.  
  871. When printing errors for ":set", use transchar() to avoid problems with
  872. non-printable characters.                |:set|
  873.  
  874. Fixed having to type RETURN twice when starting to edit another file and the
  875. message is too long.
  876.  
  877. When search pattern is not found or contains an error, print the pattern.
  878.                             |search_pattern|
  879.  
  880. Improved error message for unrecognized command in vimrc.  Now the whole line
  881. is displayed.                        |vimrc|
  882.  
  883. When error detected while writing a file, give error message instead of normal
  884. message.
  885.  
  886. Improved error messages for some options: Show character that caused the
  887. error.
  888.  
  889. Completely changed 'showcommand'.  Now also shows parts of mappings, CTRL-V,
  890. etc.                            |'showcmd'|
  891.  
  892. Changed the messages given when 'showmode' is set.  Show VISUAL when Visual
  893. mode is active.  Changed "-- INSERT COMMAND --" to "-- (insert) --".
  894. Add "(paste)" in Insert mode when paste option is set.
  895.  
  896. Add [RO] to status line for read-only files.
  897.  
  898. Improved error messages for using '%' and '#' on command-line.
  899.  
  900. An error in a regular expression would get two error messages.  The last one,
  901. "invalid search string" is now omitted.  Don't get the "hit RETURN to
  902. continue" message.
  903.  
  904.  
  905. Swap file                        *new_swapfile*
  906. ---------
  907.  
  908. The "swap file exists" message used to be given when the name of an existing
  909. swap file matches the name of a new swap file.  Now this only happens when the
  910. name of the original file is also the same.  This is implemented by storing
  911. the name of the file in the swapfile and always writing the first block of the
  912. swap file to disk.  Helpful when putting all swap files in one directory.
  913. Unix: Give swapfile same protection as original file: makes it possible for
  914. others to check the file name in the swap file.
  915. Unix: Store the inode of the original file in the swap file.  Use it when
  916. checking if the swap file is for a certain file.  Helps when editing the same
  917. file with a different path name (over a network).    |swap_file|
  918.  
  919. Give more information about the swap file with the "swap file exists" message
  920. and when recovering.
  921.  
  922. Added 'swapsync' option: When empty swap files are not synced (for busy Unix
  923. systems).  When set to "sync", sync() is used; when set to "fsync", fsync() is
  924. used.  Makes it possible to fix complaints about pauses.  The default is
  925. "fsync".                        |'swapsync'|
  926.  
  927. Reduce the calls to fsync() or sync.  Don't call it when syncing block 0 or
  928. when the file has not been changed.  Don't sync block 0 for a help file.
  929.  
  930. When file system is full, the error message for writing to the swap file was
  931. repeated over and over, making it difficult to continue editing.  Now it is
  932. only given once for every key hit.
  933.  
  934. Included catching of deadly signals for Unix and Win32.  Swap files for
  935. unmodified buffers are deleted, other swap files are preserved before exiting.
  936. After catching some deadly signals, produce a core dump.
  937.  
  938. Added ":recover [file]" command, for recover after getting the "swap file
  939. exists" message.                    |:recover|
  940.  
  941. Improved recovery when there are multiple swap files.  You get a choice which
  942. one to use (the swap file from the active editing session is ignored).
  943. "Vim -r" gives information about date and contents of the swap files.  Allow
  944. ":recover" without a file name, to recover from ".swp".    |-r|
  945.  
  946. Use home_replace() for the file names displayed during recovery.
  947.  
  948. When editing in readonly mode, don't set p_uc to zero and do use a swap file.
  949. Fixes problem of not being able to edit large files with "Vim -v".  'uc' is
  950. set to 10000 to reduce the number of writes to the swapfile.
  951.                             |'updatecount'|
  952.  
  953. When looking for swap files, also consider the shortname version.  Finds
  954. swapfiles on MS-DOS (FAT) file systems.            |swap_file|
  955.  
  956. When encountering a serious error while doing "vim -r file" (like swap file
  957. not found or empty swap file), quit Vim.        |-r|
  958.  
  959. MS-DOS and Win32: Always use full path name for swap file; otherwise it can't
  960. be deleted after using ":!cd dir".            |swap_file|
  961.  
  962.  
  963. Mouse support                        *new_mouse*
  964. -------------
  965.  
  966. The mouse is supported in an xterm and for MS-DOS and Win32.  This can be
  967. controlled with the 'mouse' option.            |mouse_using| |'mouse'|
  968.  
  969. The mouse can be used for:
  970. - positioning the cursor in the text            |<LeftMouse>|
  971. - positioning the cursor in the command-line        |c_<LeftMouse>|
  972. - selecting the Visual area                |<RightMouse>|
  973. - inserting (previously) selected text at the cursor positon |<MiddleMouse>|
  974. - moving a status line                    |drag_status_line|
  975. - selecting the active window                |<LeftMouse>|
  976. - jumping to a tag in the text              |<C-LeftMouse>| |g<LeftMouse>|
  977. - popping a position from the tag stack          |<C-RightMouse>| |g<RightMouse>|
  978. - confirming the "Hit return to continue" message    |'mouse'|.
  979. - etc.
  980.  
  981. By default, the mouse support is off for Unix, allowing the normal copy/paste
  982. with the mouse in an xterm.  Switch it on with ":set mouse=a".  For MS-DOS,
  983. Win32, and GUI, the mouse is on by default.
  984.  
  985. When quickly repeating a mouse click, this is recognized as a double, triple
  986. or quadruple click.  The 'mousetime' option sets the maximum time between two
  987. clicks for GUI, MS-DOS, Win32, and xterm.        |'mousetime'|
  988.  
  989.  
  990. Graphical User Interface (GUI)                *new_gui*
  991. ------------------------------
  992.  
  993. Included support for GUI: menus, mouse, scrollbars, etc.  Currently only with
  994. Motif and Athena interface.  You need at least Motif version 1.2 and/or X11R5.
  995. Motif 2.0 and X11R6 are OK.  Motif 1.1 and X11R4 don't work properly (but you
  996. might make it work with a bit of work)                |gui|.
  997.  
  998. Added options for GUI:
  999. 'guioptions' (list of flags that set the GUI behaviour)        |'guioptions'|
  1000. 'guifont' (list of fonts to be used)                |'guifont'|
  1001. 'guipty' (whether to use pipes or pty for external commands)     |'guipty'|
  1002.  
  1003. Added text register '*' (for text selected in GUI with mouse).
  1004.                             |registers|
  1005.  
  1006.  
  1007. Support for Windows NT and Windows 95            *new_win32*
  1008. -------------------------------------
  1009.  
  1010. There is now a new version for NT that can also be used for Windows 95.
  1011. It supports long file names, uses all available memory, and many more
  1012. enhancements.                          |vim_w32.txt|
  1013.  
  1014. There is also an MS-DOS version that has been compiled with DJGPP.  It uses
  1015. all available memory.  It supports long file names when available.
  1016.                             |vim_dos.txt|
  1017.  
  1018.  
  1019. Support for OS/2                    *new_os2*
  1020. ----------------
  1021.  
  1022. There is now a version of Vim for OS/2.  It was compiled with EMX, which made
  1023. this port quite easy.  It mostly uses the Unix files and settings.
  1024.                             |vim_os2.txt|
  1025.  
  1026.  
  1027. Support for MiNT                        *new_mint*
  1028. ----------------
  1029.  
  1030. There is now a version of Vim for MiNT.  It was compiled with gcc under
  1031. a Unix-like environment.
  1032.                             |vim_mint.txt|
  1033.  
  1034.  
  1035. Miscellaneous new features                *new_misc*
  1036. --------------------------
  1037.  
  1038. When using CTRL-A and CTRL-X, leading zeros are preserved for octal and
  1039. hexadecimal numbers.                    |CTRL-A| |CTRL-X|
  1040.  
  1041. "%" now works to match comments of the form "/* Comment /* */".    |%|
  1042.  
  1043. Added "gd", Go Declaration: search for identifier under cursor from the start
  1044. of the current function.  "gD" searches from start of the file.  Included
  1045. files are not used.                    |gd| |gD|
  1046.  
  1047. Added commands ":ascii" and "ga", show value of character under the cursor in
  1048. several ways.                        |ga| |:ascii|
  1049.  
  1050. Added "gg" command to goto line 1.            |gg|
  1051.  
  1052. Added "gI" command: Start insert in column 1.        |gI|
  1053.  
  1054. Added "g~", "gu" and "gU" operators, change case of selected text.
  1055.                             |g~| |gu| |gU|
  1056.  
  1057. Added "ge" and "gE", go back to end of word or WORD.    |ge| |gE|
  1058.  
  1059. Added "g CTRL-G": Display info about the position of the cursor. |g_CTRL-G|
  1060. Added virtual column number to CTRL-G.            |CTRL-G|
  1061. When using count > 1 with CTRL-G, show buffer number.
  1062.  
  1063. Added "gv" command: reselect last Visual area.  In Visual mode, exchange the
  1064. current and the previous Visual area.            |gv|
  1065.  
  1066. Implemented "zh" and "zl": scroll screen left/right when 'wrap' is off.
  1067. Implemented "zs" and "ze": scroll screen with cursor at start or end of screen
  1068. when 'wrap' is off.                    |zh| |zl| |zs| |ze|
  1069.  
  1070. Added "g*" and "g#" commands: like "*" and "#" but without using "\<" and "\>"
  1071. for matching whole words.                |gstar| |g#|
  1072.  
  1073. Put character attributes in a separate byte in NextScreen; makes updating of
  1074. highlighted parts more reliable.
  1075.  
  1076. Added column number to ":marks" command.        |:marks|
  1077. Improved error messages for marks that are unknown, not set, or invalid.
  1078. Added ''' mark to ":marks".
  1079.  
  1080. Added argument to ":display" and ":marks", show info for the argument.
  1081.                             |:marks| |:display|
  1082.  
  1083. Added the ":retab" command.  Can be used to change the size of a <Tab>,
  1084. replace spaces with a <Tab>, or a <Tab> with spaces.    |:retab|
  1085.  
  1086. If VIMINIT is set but is empty, ignore it.        |VIMINIT|
  1087.  
  1088. Added ":ls", synonym for ":files".            |:ls|
  1089.  
  1090. Included setting of window size for iris_ansi window.
  1091. Included better checks for minimum window size and give error message when it
  1092. is too small.
  1093. When resizing the window and 'equalalways' is set, make all windows of equal
  1094. height (all lines were taken/given from/to the last window).
  1095.  
  1096. When using the 'c' flag for the ":substitute" command, accept CTRL-E and
  1097. CTRL-Y to scroll the window up/down.
  1098. For ":s///c", the complete match is highlighted (like with incsearch).
  1099. When doing ":s/$/asdf/c", highlight one character beyond the end of the line
  1100. to show where the substitute will take place.
  1101. Added 'a' reply to substitute with confirmation: like 'y' for all remaining
  1102. replacements.                        |:s_c|
  1103.  
  1104. For ":s", don't accept digit as separator; ":s8foo8bar8" doesn't work.
  1105.                             |:s|
  1106.  
  1107. Changed "--more--" prompt to be more informative when a wrong key is typed.
  1108. When 'q' is typed at "--more--" message, don't display an extra line, don't
  1109. wait for return to be hit.
  1110. Added 'd' to --more-- responses: down half a page.
  1111. Added ':' to --more-- responses: start editing a command-line.    |'more'|
  1112.  
  1113. Put the cursor after the end of the line in Insert mode when using "CTRL-O $",
  1114. "CTRL-O 80|", and when putting text after the line.    |i_CTRL-O|
  1115.  
  1116. When splitting a window, the new window inherits the alternate file name.
  1117. With ":split [file]" and ":new [file]", the alternate file name in the current
  1118. window is set to [file].                |:split|
  1119.  
  1120. Added CTRL-W CTRL-^ command: split and edit alternate file.  |CTRL-W_CTRL-^|
  1121.  
  1122. Made it possible to put options for Vim after a single "-", e.g., "vim -gf".
  1123. Allow "--" to make arguments after it be interpreted as file names only.
  1124. Give error message when repeating "-s" or "-w" option.
  1125.  
  1126. Implemented "Vim -r" to list any swap files that can be found.  In version 3.0
  1127. this command used to crash Vim.              |-r|.
  1128.  
  1129. Removed reverse replace mode (can we call this a new feature?).  It is too
  1130. complicated to do right and nobody will probably use it anyway.  Reverse
  1131. insert is still possible.                  |'revins'|
  1132.  
  1133. Added "gq" as an alias to "Q".  The "Q" command will be changed in a following
  1134. version of Vim, to make it Vi compatible (start Ex mode).    |gq|
  1135.  
  1136. The "Q" operator no longer affects empty lines.  You can now format a lot of
  1137. paragraphs without losing the separating blank lines.  Use "Qp..." to format a
  1138. few consecutive paragraphs.                |Q|
  1139.  
  1140. Formatting with "Q" fixes up the indent of the first line (replace with
  1141. minimal number of tabs/spaces).                |Q|
  1142.  
  1143. After "Q", put cursor at first non-blank of the last formatted line.  This
  1144. makes it easier to repeat the formatting.
  1145. Made "Q}" put the cursor on the line after the paragraph (where the "}"
  1146. command would have taken the cursor).  Makes it possible to use "." to format
  1147. the next paragraph.                    |Q|
  1148.  
  1149. When formatting with "Q" while 'tw' and 'wm' are both zero, use a textwidth of
  1150. 79, or the screen width minus one if that is smaller.  Joining all the lines
  1151. doesn't make sense for the "Q" command.            |Q|
  1152.  
  1153. Added CTRL-W CTRL-T (go to top window) and CTRL-W CTRL-B (go to bottom
  1154. window).                        |CTRL-W_CTRL-T|.
  1155.  
  1156. When in Insert mode and wrapping from column one to the last character, don't
  1157. stick at the end but in the column with a following "k" or "j" command.
  1158.  
  1159. Added "[P" and "]P" as synonyms for "[p".  These commands are now redoable.
  1160. Fixed cursor positioning and character-wise text.    |[p|
  1161.  
  1162. Improved the handling of empty lines for "[p" and the like.  |[p|
  1163.  
  1164. Improved ":center", ":right", and ":left"; blank lines are no longer affected,
  1165. tabs are taken into account, trailing blanks are ignored. |formatting|
  1166.  
  1167. Made '.' in 'path' be replaced with directory of current file.  Makes "gf"
  1168. work on "#include "vim.h"" when editing "src/normal.c".  Empty part in 'path'
  1169. stands for current directory.                |gf| |'path'|
  1170.  
  1171. Added '-' register for deletes of less than one line.    |registers|.
  1172.  
  1173. When :bdel and :bunload are used to remove buffers that have active windows,
  1174. those windows are closed instead of giving an error message.  Don't give an
  1175. error message when some, but not all, of the buffers do not exist.
  1176. Added buffer name argument to ":bunload" and ":bdelete".  Completion also
  1177. works, and '%' and '#' can be used.            |:bdelete| |:bunload|
  1178.  
  1179. When file name changed, also change name of swap file.  This makes it easier
  1180. to find the swap file for recovery.            |swap_file|
  1181.  
  1182. The Amiga trick for recognizing an MS-DOS-compatible filesystem is now also
  1183. done for UNIX.  Fixes problems with wrong swap file and backup file name on
  1184. an MS-DOS partition for FreeBSD and Linux.        |auto_shortname|
  1185.  
  1186. When writing the file fails and there is a backup file, try to put the backup
  1187. in place of the new file.  Avoids losing the original file when trying to
  1188. write again and overwriting the backup file.        |write_fail|
  1189.  
  1190. If 'backup' is off and 'writebackup' is on, don't delete an existing backup
  1191. file; instead use another file name.            |backup_table|
  1192.  
  1193. When going to another window in Visual mode: if it is the same buffer,
  1194. update Visual area; if jumping to another buffer, reset Visual mode.
  1195.                             |Visual_mode|
  1196.  
  1197. When an empty buffer is edited and written out, that file is also empty.
  1198. Added "No lines in buffer" message when last line in buffer is deleted.
  1199.  
  1200. Added checks for creating too long lines on non-UNIX systems.    |limits|
  1201.  
  1202. When last file in argument list has been accessed, quit without asking.
  1203. This works more intuitively when using ":prev".        |arglist_quit|
  1204.  
  1205. Set alternate file name when using buffer commands like ":bmod", ":buf",
  1206. ":bdel", etc.                        |:buffer|
  1207.  
  1208. Changes to quickfix: ":cl" lists only recognized errors, use ":cl!" to list
  1209. all.  ":cn" and ":cp" don't go to an unrecognized error but give an error
  1210. message when at the first/last error.  When a column number is not found, put
  1211. the cursor at the first non-blank.  When deciding to redisplay the message or
  1212. not, take tabs into account.  When ":cp" or ":cn" fail for some reason, don't
  1213. change the error index.  Changed the format of the ":cl" listing.  Don't show
  1214. the column number if it is zero.  Take care of tabs when displaying an error
  1215. message.  Error number or count can also be before ":cc", ":cp", and ":cn".
  1216.                             |quickfix|
  1217.  
  1218. When asked a yes/no question, ESC is the same as 'n'.    |:s_c|
  1219.  
  1220. Removed a few large arrays from the stack; MS-DOS was running out of stack
  1221. space.
  1222.  
  1223. Added ":view file" and ":sview file": start editing a file with 'readonly'
  1224. set.                            |:view| |:sview|
  1225.  
  1226. Removed restriction on command-line length.
  1227.  
  1228. When adding a jump to the jumplist, remove older jumps to the same line.
  1229.                             |jumplist|
  1230.  
  1231. Added separate mapping for normal mode and Visual mode.  New commands ":nmap",
  1232. ":nnoremap", ":nunmap", ":vmap", ":vunmap", and ":vnoremap". |:nmap|
  1233.  
  1234. When 'visualbell' is set and 't_vb' is empty, don't beep or flash or anything
  1235. (used to display some ^G in the command-line which was deleted before you
  1236. could see it).                        |t_vb| |'visualbell'|
  1237.  
  1238. Added "-u vimrc" Vim argument: Read initializations only from specified vimrc
  1239. file and skip the other initializations.  Use "-u NONE" to skip.    |-u|
  1240.  
  1241. Added "-i viminfo" Vim argument: Set name for viminfo file.  Use "-i NONE"
  1242. to skip reading viminfo.                |-i|
  1243.  
  1244. For commands that get a file name out of the text (e.g., "gf", "[f"), ignore
  1245. the part of a hypertext link that gives the file type and machine name.
  1246.                             |gf|
  1247.  
  1248. When 'columns' or 'lines' is changed, try to set the window size.
  1249.  
  1250. Termcap stuff is not used when not in full-screen mode.
  1251.  
  1252. Process modelines after recovering a file.  When checking modelines runs into
  1253. an error, don't check other lines.              |modeline|
  1254.  
  1255. When 'wrap' option is off, make sure the whole character under the cursor is
  1256. on the screen (for TAB and non-printable characters).    |'wrap'|
  1257.  
  1258. Added '\r', '\n', '\b', '\e' and '\t' to regular expressions.
  1259. Added "\i" to regular expressions, match identifier character.  "\I" does the
  1260. same but without digits (for start of identifier).  Also added "\k" and "\K"
  1261. for keywords, "\f" and "\F" for file name, "\p" and "\P" for printable
  1262. characters.                        |search_pattern|
  1263.  
  1264. The trick in GetChars() in unix.c to keep on reading characters until none are
  1265. available is not done if Read() returns more than one character.  Should speed
  1266. up getting characters from the keyboard on many systems.
  1267.  
  1268. Added implementation of 'lisp' option.  It is not 100% the same as Vi.
  1269. Added "-l" Vim argument: Switch lisp mode on.        |-l|
  1270.  
  1271. MS-DOS: Only beep once in ten times between key hits.  Needed because
  1272. beeps take a lot of time to wait for.
  1273.  
  1274. Made argument to GetChars a long; makes it possible to wait for more than
  1275. 32 seconds on 16-bit machines (for the very patient).    |'timeoutlen'|
  1276.  
  1277. Made "#" and "*" find the text under the cursor.    |star| |#|
  1278.  
  1279. Unix: Expand path names starting with "~" to full path names.  Makes "gf" work
  1280. on "~user/path".                    |gf|
  1281.  
  1282. Fixed behaviour of "x" and "X", when 'whichwrap' is set, to include 'l' and
  1283. 'h' for wrapping.  Now "x" on an empty line deletes that line and "X" in
  1284. column 0 joins the line with the previous line.        |x| |X| |'whichwrap'|
  1285.  
  1286. When doing ":make" and 'autowrite' is set, write all buffers, not just current
  1287. one.  Just like ":!cmd".                |:make|
  1288.  
  1289. ":make" now shows the command that is executed by the shell, including
  1290. 'shellpipe' and 'errorfile'.  Helps to understand how 'shellpipe' is used.
  1291.                             |:make|
  1292.  
  1293. Allow for digraphs to be entered in reverse: Char1-char2 and char2-char1 both
  1294. work.                            |digraphs|
  1295.  
  1296. When 'splitbelow' is not set, the space from closing a window goes to the
  1297. window below it instead of above it.  Makes the sequence split-window,
  1298. close-window not change the window layout.        |'splitbelow'|
  1299.  
  1300. Added '< and '> mark.  '< is lowest position of Visual area and '> highest
  1301. position.  Use ":'<,'>" when ":" is used in Visual mode.  Makes it possible to
  1302. use the command-line history.                |'<|
  1303.  
  1304. Implemented ":*", which is short for ":'<,'>", Visual area. |:star|
  1305.  
  1306. Stop Visual mode when starting to edit another file (e.g., with "'A").
  1307.  
  1308. When doing ":xit" or "ZZ" in a window for a buffer that has changed, write the
  1309. buffer even if there are other windows on this buffer.    |:xit|
  1310.  
  1311. Give a warning message when 'patchmode' and 'backupext' are equal.
  1312.  
  1313. When input/output is not from/to a terminal, just give a warning message,
  1314. don't exit.
  1315.  
  1316. In Insert mode, CTRL-K ESC does not exit Insert mode.  The two characters
  1317. typed after CTRL-K are not mapped.
  1318. Typing a special key after CTRL-K inserts the <> name.  CTRL-V inserts the
  1319. terminal key code (except in the GUI).          |i_CTRL-K| |i_CTRL-V|
  1320.  
  1321. Improved screen output.  The cursor positioning code is avoided whenever
  1322. possible.  When outputting a char on the next line, column zero, use CR-LF to
  1323. go there instead of cursor positioning, which uses fewer characters.
  1324. Added using scroll regions when inserting/deleting screen lines.  Works faster
  1325. for terminals that don't have erase/delete line functions but do have
  1326. scrolling regions (vt100).                |t_cs|
  1327.  
  1328. No longer do home_replace() when it results in just "~"; it was confusing that
  1329. 'backupext' and 'backupdir' are both shown as "~" by default.
  1330.  
  1331. Unix: When making a backup file, set the group the same as the group of the
  1332. original file.  If this fails, set the protection bits for the group to be
  1333. the same as for others.                    |'backup'|
  1334.  
  1335. Fixed: When 'textauto' is set, only the first line was used to decide to set
  1336. or reset 'textmode'.  Would cause problems for, say, a file with mappings.
  1337. Now when editing a file where the first line ends in ^M, but a later one
  1338. doesn't, the file is reloaded in notextmode.        |'textauto'|
  1339.  
  1340. When sourcing a file on MS-DOS, Win32, or OS/2 and 'textauto' is set, try to
  1341. recognize non-textmode files by the first line.        |:source_crnl|
  1342.  
  1343. For ":" commands that have one file name argument: Only Unix sees the space as
  1344. a file name separator.  For Amiga, MS-DOS, et al., a space is considered to be
  1345. part of the file name (except a trailing space).  For Unix, don't give an
  1346. error message for an argument with spaces when a wildcard is used; give the
  1347. error when expanding the wildcard results in more than one file.  This allows
  1348. the use of ":e `ls ve*.c`" on Unix.
  1349.  
  1350. When replacing the name of the home directory with "~", try both $HOME and the
  1351. "real" home directory: `cd $HOME; pwd`.  Fixes problems when home dir is
  1352. mounted or contains links.  Fixed home_replace replacing "/home/pieter/file"
  1353. with "~er/file" when home is "/home/piet", Command-line completion on file
  1354. names and buffer names use "~/" for home directory when approriate.
  1355.  
  1356. When completing with CTRL-L and there are multiple matches, beep!  Ignore case
  1357. when comparing file names for MS-DOS and Win32.  For Amiga, don't ignore case
  1358. for non-file names.                    |c_CTRL-L|
  1359.  
  1360. Added ":registers" as a synonym for ":display".        |:registers|
  1361.  
  1362. Added check for "locale.h"; renamed USE_LOCALE to HAVE_LOCALE_H.
  1363.  
  1364. Recognize a terminal name as xterm when it starts with "xterm" and iris-ansi
  1365. when it starts with iris-ansi.  This will also catch "xterms".  Also: ignore
  1366. case, catch "Xterm".  This is used when deciding to use the window title.
  1367. Unix: If terminal is xterm, hpterm, dtterm, sun-cmd, screen, or iris-ansi, set
  1368. 'ttyfast' option.
  1369. Added builtin termcap entry for iris-ansi.  The entry in the termcap is often
  1370. wrong.                            |'term'|
  1371.  
  1372. Included SAVE_XTERM_SCREEN in feature.h, to include the t_ti and t_te entries
  1373. for the builtin xterm.  They enable saving the xterm contents when starting
  1374. Vim and restoring it on exit.                |xterm-screens|
  1375.  
  1376. Special trick to make copy/paste of wrapped lines work with xterms: If the
  1377. first column is to be written, write the last char of the preceding line
  1378. twice.  This will work with all terminal types (regardless of the xn,am
  1379. settings).  (Juergen Weigert)  But only when 'ttyfast' is set.
  1380.  
  1381. When 'title' and/or 'icon' is reset in vimrc, don't even check if they can be
  1382. restored.  This reduces startup time when using Vim in an xterm on a remote
  1383. machine.                        |'title'|
  1384.  
  1385. When coming back from a CTRL-Z, before setting title, store the current title
  1386. again for restoring later, as it might have changed.    |'title'|
  1387.  
  1388. Expanding shell variables works now.  Also made ":e $VAR^I", ":e this$VAR^I",
  1389. and ":e `echo hi`^I" expand correctly by not adding a "*" in these cases.
  1390.  
  1391. Command-line expansion: Command after '+' will be expanded; e.g., in
  1392. ":e +s^D".  Where file names may be expanded, support for back-quotes has been
  1393. added.                            |+cmd|
  1394.  
  1395. Set '[ and '] marks to start and end of undone/redone lines.
  1396. Set '[ and '] to start/end of inserted text after inserting text. |'[|
  1397.  
  1398. Marks in the jumplist are not deleted when deleting lines; avoids "mark not
  1399. set" error messages when using CTRL-O command.  If there are two marks for the
  1400. same line, the oldest one is removed.            |CTRL-O|
  1401.  
  1402. Added setting of previous context mark when changing files (with ":e file" or
  1403. ":n" or ":buf n").  Now you can go back with CTRL-O.    |CTRL-O|
  1404.  
  1405. Added list of options that are enabled/disabled at compile time to ":version"
  1406. command (+GUI -digraphs -eindent, etc.).  For Unix, add a line to the
  1407. ":version" command to show how it was compiled.        |:version|
  1408.  
  1409. Made CTRL-N and CTRL-P for command-line completion line cyclic.    |c_CTRL-N|
  1410.  
  1411. "<cword>" in the command line where a file name is expected is expanded to
  1412. the current word under the cursor.  "<cWORD>" is expanded to the WORD under
  1413. the cursor, "<cfile>" to the file name under the cursor.  "<afile>" is
  1414. expanded to the file name for the current autocommand.    |:<cword>|
  1415.  
  1416. Added character 163 (pound sign on English keyboards) as an alternative for
  1417. the '#' command.                    |#|
  1418.  
  1419. Added ":cNext" as a nickname for ":cprevious".        |:cNext|
  1420.  
  1421. Made ":bnext" and ":bNext" wrap around the end of the buffer list. |:bnext|
  1422.  
  1423. When a regexp contains a '[' without a matching ']', assume the '[' is a
  1424. normal character.  This makes ":help [" work.        |search_pattern|
  1425.  
  1426. When "[{" or "]}" is used with a count > 1, and not enough levels are found,
  1427. just use the last match found.  Makes "99[{" go to the start of a function.
  1428.                             |[{|
  1429.  
  1430. Added commands to search for #if/#endif and start/end of comment: "[#", "]#",
  1431. "[*", "[/", "]*" and "]/".                |[#| |[*| |[/"
  1432.  
  1433. Added break checking to do_do_join(); makes it possible to use CTRL-C when
  1434. joining lots of lines.                    |J|
  1435.  
  1436. Made it possible to include ":sall" in vimrc.  main() won't open the buffer
  1437. and won't split the windows when this already has been done by a command in
  1438. the vimrc.  Added count to ":sall", ":sunhide" and ":sball": maximum number
  1439. of windows.                        |:sall|
  1440.  
  1441. Added ":abclear" and ":mapclear": remove all abbreviations/mappings.
  1442.                             |:mapclear| |:abclear|
  1443.  
  1444. MS-DOS: For Visual mode, always invert the character under the cursor, also
  1445. when cursor cannot be switched off (it's mostly not a block cursor).
  1446.                             |t_vi|
  1447.  
  1448. Made ":g/#/d" a lot faster by not calling cursupdate() for each deleted line.
  1449.                             |:global|
  1450.  
  1451. When opening windows for all buffers or arguments, make one window with at
  1452. least 'winheight' or 5 lines.  Avoids ending up with all one line windows.
  1453.                             |:all| |:ball|
  1454.  
  1455. MS-DOS and Win32: Always use a backslash in file names.  Using a slash caused
  1456. trouble with some external commands.  Using a backslash before a normal
  1457. filename character is now allowed for most commands.
  1458.  
  1459. Added check for last modification time of original file before overwriting it.
  1460. When it has changed since reading or writing it, ask the user if he wants to
  1461. overwrite it or not.  Also check when suspending, calling a shell (command),
  1462. and un-hiding a buffer, and give a warning message if it has changed.
  1463.                             |timestamp|
  1464.  
  1465. Added filename argument for ":buffer" and ":sbuffer".  Allow an incomplete
  1466. specification, jump to the buffer where the name matches, unless there are
  1467. several matches.                    |:buffer|
  1468.  
  1469. When there is an argument list and we are not really editing the 3rd file in
  1470. it, display "((3) of 5)" instead of "(3 of 5)".
  1471.  
  1472. Added termcap options for "da" and "db".  On terminals that have "da", scroll
  1473. reverse moves lines from above down onto the screen; on terminals that have
  1474. "db", deleting a line moves lines from below onto the screen.  These lines
  1475. need to be cleared.                    |t_da| |t_db|
  1476.  
  1477. Added termcap options for "cd", clear until end of display.  Works faster than
  1478. repeating "ce", clear to end of line.            |t_cd|
  1479.  
  1480. When changing the terminal name, restore the title and other things before
  1481. clearing the terminal codes, and set them back after setting the new codes.
  1482.  
  1483. Don't clear the screen if stderr is redirected for filter command.  Don't give
  1484. message for writing or reading the temporary file for a filter command (unless
  1485. there is an error).                    |:!|
  1486.  
  1487. When reading a file, also set the no-end-of-line when not in binary mode.
  1488. When 'binary' is set later and the file is written, the end-of-line is not
  1489. written.  Helps when having an autocommand to gunzip "*.gz" files.
  1490.                             |'binary'| |'eol'|
  1491.  
  1492. Unix: Allow reading from fifos (named pipes) and sockets.  Give a message when
  1493. doing it.
  1494.  
  1495. Added modifiers for '%' and '#' on the command-line: ":p" for path, ":e" for
  1496. extension, etc.                        |::p|
  1497.  
  1498. When replacing '%', '#', etc. on the command-line, do wildcard expansion if
  1499. there were any wildcards before replacing.  Makes ":so `macros_file %` work.
  1500. But for ":e %" no expansion is done, in case the current file name contains a
  1501. wildcard.                        |:_%|
  1502.  
  1503. MS-DOS and Win32: When $VIM is not defined, use $HOME.    |'helpfile'|
  1504.  
  1505. When replacing home directory with "~", and it's not followed by anything,
  1506. make it "~/".  Looks more like a path name and can't be confused with "~" for
  1507. 'backupext'.                        |home_replace|
  1508.  
  1509. Added 'aleph', 'hkmap', and 'rightleft' options.  Can be used to edit text
  1510. that is written from right to left (e.g., Hebrew).  Improvement above reverse
  1511. insert.  Only when RIGHTLEFT is defined at compile time.
  1512.                             |vim_rlh.txt|
  1513.  
  1514. Added extra flag 'm' to 'cpoptions'.  If included, typing does not interrupt a
  1515. 'showmatch' delay, like Vi.  By default it is not included; when a character
  1516. is typed, the showmatch is aborted.            |'showmatch'|
  1517.  
  1518. Line number of ruler is zero when buffer is empty.  Makes it possible to see
  1519. the difference between an empty buffer and a buffer with a single line in it.
  1520. Column number of ruler is zero when line is empty.  Makes is possible to see
  1521. the difference between an empty line and a line with a single space in it.
  1522.                             |'ruler'|
  1523.  
  1524. When trying to quit Vim while there is a modified, hidden buffer, make that
  1525. buffer the current buffer.  Helps the user to decide to use "q!" or ":wq".
  1526.                             |hidden_quit|
  1527.  
  1528. Added Shift-Tab for command line completion: Works like CTRL-P.  It works for
  1529. Amiga, MS-DOS, and Win32.                |c_<S-Tab>|
  1530.  
  1531. When trying to open a ".vimrc" file and it fails, try opening "_vimrc".  Also
  1532. the other way around.  This helps for OS/2, Win32, and combined Unix/DOS
  1533. machines.
  1534.  
  1535. When doing ":wn" or 'autowrite' is on, there are two file messages, but it's
  1536. not clear which is for writing.  Added "written" to message for writing.  Also
  1537. helps to avoid confusion when appending to a file.  Can be made shorter with
  1538. 'w' and 'W' flags in 'shortmess'.
  1539.  
  1540.  
  1541. VI COMPATIBILITY IMPROVEMENTS                *vi_compat*
  1542. =============================
  1543.  
  1544. Added "\?", "\/", and "\&" to Ex address parsing; use previous search or
  1545. substitute pattern.                    |:range|
  1546.  
  1547. Set alternate file name for ":file fname" command.    |:file_f|
  1548.  
  1549. When using "D" in an empty line, give beep.        |D|
  1550.  
  1551. Accept CTRL-Q in Insert mode and command-line mode like CTRL-V.
  1552.                             |i_CTRL-Q| |c_CTRL-Q|
  1553.  
  1554. Added "-R" Vim argument: readonly mode.            |-R|
  1555.  
  1556. Added "-L" Vim argument, same as "-r", do recovery.    |-L|
  1557.  
  1558. Don't set 'readonly' for each file in readonlymode.    |'readonly'|
  1559.  
  1560. "Vim +/pat file" now finds pat in line 1.        |-+/|
  1561.  
  1562. Quit readonly mode when the 'readonly' option is reset in any buffer.
  1563.                             |'readonly'|
  1564.  
  1565. Made ":|" print current line (used to do nothing).    |:bar|
  1566.  
  1567. Fixed: ":@r" only executed the first line as an Ex command, following lines in
  1568. normal mode.
  1569. For ":@r", when register "r" is not linewise, add a return anyway (only when
  1570. 'cpoptions contains 'e').                |:@|
  1571.  
  1572. Implemented "-w{number}" Vim argument.  It is ignored (Vi sets the 'window'
  1573. option to {number}).                    |-w_nr|
  1574.  
  1575. When using ":wq" after the message "No lines in buffer", an empty file is
  1576. created (used to be a file with a single newline).
  1577.  
  1578. Allow writing a readonly buffer with ":wq file".    |:wq|
  1579.  
  1580. Allow range for ":xit", ":exit", and ":wq".        |:xit| |:wq|
  1581.  
  1582. Added ":open" command (not supported), to make ":o" not be recognized as
  1583. ":only".                        |:open|
  1584.  
  1585. Also set previous context mark when moving within the line (but not when not
  1586. moving the cursor at all).  Makes the mapping "map 0 my^V|mzl$`z`y``" work.
  1587.                             |''|
  1588.  
  1589. Added 'cpoptions': flags that influence the Vi-compatible behaviour.
  1590. This includes a flag that switches on the display of a dollar sign for a
  1591. change within one line, without updating screen but putting a '$' a the end of
  1592. the changed text.                    |'cpoptions'|
  1593.  
  1594. Only when 'f' flag is present in 'cpoptions' is the file name for a ":read"
  1595. command used to set the name of the current buffer, if it didn't have a
  1596. name yet.  Likewise for the 'F' flag and ":write".
  1597.  
  1598. In replace mode, NL does not replace a character but is inserted.
  1599. Fixed 'r<CR>'.  It didn't delete a character.  Now also made replace with a
  1600. newline and a count Vi-compatible: only one newline is inserted.
  1601.  
  1602. Fixed moving marks with the ":move" command.        |:move|
  1603.  
  1604. Allow ';' after search command, e.g., "/pat/;?foo".    |//;|
  1605.  
  1606. Made <Home> work like "1|" instead of "0": makes the cursor stick in column 1
  1607. when moving up/down.                    |<Home>|
  1608.  
  1609. "O" in an empty buffer now inserts a new line as it should.
  1610. ":0r file" in an empty file appends an empty line after the file, just like
  1611. Vi.                            |:read|
  1612. "dd" deletes a single, empty line in the buffer, making the buffer empty.
  1613.  
  1614. In an Ex address, the '+' character is not required before a number, ".2d" is
  1615. the same as ".+2d", "1copy 2 3 4" is the same as "1copy 2+3+4".
  1616.                             |:range|
  1617.  
  1618. An ESC in normal mode does not flush the map buffer, only beeps.  Makes
  1619. ":map g axx^[^[ayy^[" work.
  1620.  
  1621. After undo, put cursor on first non-white instead of in column 0.
  1622. Put cursor on first non-white after a few Ex commands and after "2>>".
  1623.                             |u| |>>|
  1624.  
  1625. The commands ":print", ":number", and ":list" did not leave the cursor on the
  1626. last line.
  1627.  
  1628. Fixed "vim -c '/return' -t main" not working.  Now the tag is jumped to before
  1629. executing the "-c" command.                |-c| |-t|
  1630.  
  1631. In a search pattern, '*' is not magic when used as the first character.
  1632.                             |search_pattern|
  1633.  
  1634. Made searching a bit more Vi-compatible.  Fixed search for "/.*p" advancing
  1635. only one character at a time instead of jumping to after the 'p'.
  1636. "abababababab" only gets three matches for "/abab", instead of five.
  1637. When 'c' is not present in 'cpoptions', the Vim version 3.0 way is used.
  1638.                             |'cpo'|
  1639.  
  1640. When writing part of the buffer to the current file, '!' is required.  Could
  1641. accidentally destroy the file when giving a line range or when Visual was
  1642. active while doing ":w".
  1643. Error message when trying "1,10w"; now it is "Use ! to write partial buffer".
  1644. It is also given when the current file does not exist yet.  |:w!|
  1645.  
  1646. "r" now sets the last inserted text.            |r|
  1647.  
  1648. Allow "map a ab", head recursive mapping (just like Vi). |recursive_mapping|
  1649.  
  1650. Remove trailing spaces for Ex commands that accept a "+command" argument, when
  1651. it is not followed by another command; e.g., when using ":e file ".  |:+cmd|
  1652.  
  1653. Fixed CTRL-V's not being removed from argument to ":map".    |:map|
  1654.  
  1655. Made "|" exclusive.                    |bar|
  1656.  
  1657. Doing "%" on an empty line now beeps.            |%|
  1658.  
  1659. Changed "No lines in buffer" from error message into normal message.  This is
  1660. not Vi-compatible (let's call it a negative compatibility improvement), but it
  1661. works more like one would expect.
  1662.  
  1663. Fixed removing not enough backslashes and too many CTRL-V's from filenames.
  1664.                             |:filename|
  1665.  
  1666. When command line causes an error, don't execute the next command after '|'.
  1667.                             |:bar|
  1668.  
  1669. When starting to edit a new file, put cursor on first non-blank of line,
  1670. instead of column 1.
  1671.  
  1672. Changed CTRL-D and CTRL-U to scroll a certain amount of screen lines instead
  1673. of physical lines (makes a difference with wrapping lines).
  1674. Changed the cursor positioning for CTRL-U and CTRL-D when lines wrap.  The
  1675. cursor is now kept a fixed number of FILE lines from the start of the window,
  1676. instead of SCREEN lines.  This should make CTRL-U followed by CTRL-D make the
  1677. cursor return to the same line in most cases (but not always).
  1678. Made CTRL-U on first line and CTRL-D on last line in buffer produce a beep
  1679. and not do anything.  This is Vi-compatible.        |CTRL-D| |CTRL-U|
  1680.  
  1681. Added support for abbreviations that end in a non-keyword character.
  1682.                             |abbreviations|
  1683.  
  1684. When 'formatoptions' option is set to "vt", formatting is done Vi-compatibly.
  1685.                             |fo_table|
  1686.  
  1687. When COMPATIBLE is defined when compiling, 'modeline' is off by default.
  1688.  
  1689. Made the use of modelines a bit more Vi-compatible: There must be white space
  1690. before "ex:".  When using "vi:set " there must be a terminating ':'.
  1691.                             |modeline|
  1692.  
  1693. Fixed Vi incompatibility: "o<Esc>u" didn't put the cursor back where it was
  1694. before. "O<Esc>u" is still incompatible, this is considered a bug in Vi,
  1695. because it puts the cursor on another line.        |u|
  1696.  
  1697. Made "zz" at end of file also put cursor in middle of window, making some "~"
  1698. lines visible.                        |zz|
  1699.  
  1700. Fixed files being written when 'autowrite' is on and a filter command is used.
  1701.                             |'autowrite'|
  1702.  
  1703. Screen updating for "J" improved a bit.  Was clearing the cursor line instead
  1704. of the next line.  Looks smoother now.
  1705.  
  1706. For ":sleep" command: place the displayed cursor at actual cursor position.
  1707.  
  1708. Removed restriction on number of screen columns (MAX_COLUMNS).  It was not
  1709. used for anything.
  1710.  
  1711. When using a substitute command in a ":global" command, summarise the number
  1712. of substitutions once, instead of giving a message for each line.
  1713.  
  1714. Fixed: The ":global" command could set a mark in the jumplist for every
  1715. matching line.  Now only set the previous context mark once.  Also makes
  1716. ":g/pat/s//foo/" run quite a bit faster.
  1717.  
  1718. ":global" didn't stop at an error message, e.g., from ":g/pat/s//asd/p".  Now
  1719. it stops at the first error message.
  1720.  
  1721. When the 'x' flag is present in 'cpoptions', typing <Esc> on the command-line
  1722. executes it, instead of abandoning it.
  1723.  
  1724. Added 'p' flag to ":substitute", print last line with substitution.
  1725.  
  1726. Fixed: ":0;/that/" should not set previous context mark.
  1727.  
  1728. Fixed: ":r file" should put cursor on first non-blank.
  1729.  
  1730. Adjusted default for 'history' when COMPATIBLE defined.  Adjusted setting of
  1731. 'iskeyword' when 'compatible' is set or COMPATIBLE defined.
  1732.  
  1733. Fixed: ":set paste all" should also recognize "all".
  1734.  
  1735. Fixed: Vi allows for a ':' between the range and an Ex command.
  1736.  
  1737. Fixed Vi incompatibility: A shell command ":!ls" can be followed by a newline
  1738. and another Ex command; e.g., ":!ls^@p" (Where ^@ is entered as <C-V><C-J>.
  1739. Don't do this when there is a backslash before the newline.
  1740.  
  1741. Filter command didn't put cursor on first non-blank after filtering.
  1742.  
  1743. Don't skip spaces when using ":!!  -x".
  1744.  
  1745. "r!ls" didn't set the previous "!" command.  Now ":r!!" also works.
  1746. Fixed: Only one '!' argument to a ":!" command was expanded.  Now this is Vi
  1747. compatible.  The '!' can be escaped with a backslash.
  1748.  
  1749. Added '!' flag to 'cpoptions'.  When present, a shell command ":!cmd" sets the
  1750. function to use for redoing a filter command with ".".
  1751.  
  1752. Fixed: "dfYfX.;" did put cursor on "Y" instead of "X".  Don't set last
  1753. searched character when redo-ing a command.
  1754.  
  1755. Fixed: "/pat" ":s//foo" should use "pat" for search pattern.  It's hard to
  1756. find out how Vi works...
  1757.  
  1758. Added 'tag' as a short name for the 'tags' option (Vi compatible).
  1759. Added 'ed' abbreviation for 'edcompatible' option, 'scr' for 'scroll', 'tty'
  1760. for 'ttytype', 'wi' for 'window', 'to' for 'timeout' (Vi has them too).
  1761.  
  1762. Added: 'tagstack' ('tgst') option.  It's hidden (Vi: enable tag stack).
  1763. Fixed: 'ttytype' option works like an alias for 'term'.
  1764.  
  1765.  
  1766. BUG FIXES                        *bug_fixes*
  1767. =========
  1768.  
  1769. Changed method to save characters for BS in replace mode.  Now works correctly
  1770. also when 'et' set and entering a TAB, replacing with CR several times, with
  1771. keyword completion and when deleting a NL where spaces have been deleted.
  1772.  
  1773. Fixed an occasional core dump when using ^P or ^N in Insert mode under certain
  1774. conditions.
  1775.  
  1776. Fixed ":s/\(.*\)/\1/"; was replacing any <CR> with line break.
  1777.  
  1778. Fixed line being printed when there is a '|' after a ":s" command, e.g.,
  1779. ":%s/a/b/g|%s/b/c/g" printed the last line where an 'a' is replaced by a 'b'.
  1780.  
  1781. Don't map the key for the y/n question for the ":s///c" command.
  1782.  
  1783. Fixed bug where inserting a new-line before a line starting with 'if', etc.
  1784. would cause a smart-indent because of that 'if'.
  1785.  
  1786. Doing CTRL-@ when there was no inserted text yet didn't quit Insert mode.
  1787.  
  1788. Fixed bug where nowrap was set and doing 'j' or 'k' caused a sideways scroll
  1789. with the cursor still in the middle of the screen.  Happened when moving from
  1790. a line with few tabs to a line with many tabs.
  1791.  
  1792. When CTRL-T fails (e.g., when buffer was changed), don't change position
  1793. in tag stack.
  1794.  
  1795. If file system full and write to swap file failed, was getting error message
  1796. for lnum > line_count (with ":preserve").
  1797.  
  1798. Fixed cursor not visible when doing CTRL-Z for some versions of Unix (White).
  1799.  
  1800. Fixed problem with "CTRL-O ." in Insert mode when repeated command also
  1801. involves Insert mode.
  1802.  
  1803. Fixed "line count wrong" error with undo that deletes the first line.
  1804.  
  1805. After undo, "''" puts the cursor back to where it was before the undo.
  1806.  
  1807. Inserting a tab with 'et' set did not work correctly when there was a real tab
  1808. in front of it (Brown).
  1809.  
  1810. Fixed core dump when using CTRL-W ] twice (tag stack was invalid).
  1811.  
  1812. Fixed overwriting "at top of tag stack" error message.  Only show file message
  1813. for a tag when it is in another file.
  1814.  
  1815. Added '~' to the special characters for tag search patterns.  A tag with a '~'
  1816. in the search command is now correctly executed.
  1817.  
  1818. Fixed '^' recognized as start of line in "/[ ^I]^".
  1819.  
  1820. 'wrapmargin' is restored to its previous value when 'paste' is reset.
  1821. When 'paste' is set, behave as if 'formatoptions' is empty.
  1822.  
  1823. Fixed '^' appearing in first window when CTRL-V entered in second window on
  1824. same buffer.
  1825.  
  1826. Fixed using count to reselect Visual area when area was one line.
  1827.  
  1828. Fixed setting curswant properly after Visual selection.
  1829.  
  1830. Fixed problem that column number was ridiculous when using "V" with ":".
  1831.  
  1832. After truncating an autoindent, leave curswant after the indent.
  1833.  
  1834. Fixed ":n #"; put the cursor on the right line like ":e #".
  1835.  
  1836. Recompute column for shown command when rearranging windows.
  1837.  
  1838. Check screen size after Vim has been suspended.
  1839.  
  1840. When creating a new buffer, set 'readonly' to false by default.  Fixes getting
  1841. an empty readonly buffer after ":new" in a readonly buffer.
  1842.  
  1843. Fixed outputting meta characters (esp. meta-space) when switching highlighting
  1844. on/off.
  1845.  
  1846. Added file-number argument to getfile() and do_ecmd() to be able to edit a
  1847. specific buffer.  Fixes problem with CTRL-^ to buffer without a file name.
  1848.  
  1849. With ":file name" command, update status lines for new file name.
  1850.  
  1851. When recovering, "Original file may have been changed" message was
  1852. overwritten.  Also changed it into an error message and don't wait for return
  1853. after "using swap file" message.
  1854.  
  1855. Fixed core dump when using commands like ":swap" in vimrc file.
  1856.  
  1857. Fixed "more" for :global command.
  1858.  
  1859. Don't accept ":g", global command without any argument.
  1860.  
  1861. Fixed bug: When setting 'history' to 0 (happens when setting 'compatible')
  1862. there could be a crash or a hang (only when 'viminfo' didn't include lines in
  1863. history).
  1864.  
  1865. After using ":set invlist", cursor would not stick to the column.
  1866.  
  1867. Fixed problem of trailing 'q' with executing recorded buffer when 'sc' set.
  1868. Remove the character(s) that stopped recording from the register (normally
  1869. 'q', but can be more when using a mapping for 'q').
  1870.  
  1871. MS-DOS: Replace call to delay() by loop around biostime().  Fixes problem with
  1872. mouse crawling under Windows 95.
  1873.  
  1874. Fixed CTRL-Z not working for Apollos.
  1875.  
  1876. Fixed cursor not ending on right character when doing CTRL-T or CTRL-D in the
  1877. indent in Insert mode.
  1878.  
  1879. When 'columns' was set to zero, core dump or hang might happen.
  1880.  
  1881. Fixed message from ":cn" being deleted by screen redraw.
  1882.  
  1883. Fixed window resizing causing trouble while waiting for "-- more --" message.
  1884.  
  1885. Don't wait for a return after abandoning the command-line.
  1886. Fixed extra wait_return() after error message on starting up.
  1887.  
  1888. Fixed matching braces inside quotes for "%".
  1889.  
  1890. Fixed "illegal line number" error when doing ":e!" after adding some lines at
  1891. the end of the file.
  1892.  
  1893. Fixed ":map #1 :help" not working.
  1894.  
  1895. Fixed abbreviations not working properly.
  1896.  
  1897. Fixed calling free() in buf_write() when smallbuf[] is used: could cause big
  1898. problems when almost out of memory.
  1899.  
  1900. Removed double redraw when returning from ":stop" command.
  1901.  
  1902. After recovering there was one extra empty line at the end.
  1903.  
  1904. Fixed core dump when reporting number of buffers deleted.
  1905. Fixed core dump when deleting the current buffer.
  1906.  
  1907. Fixed cursor in wrong position after ":set invwrap" and cursor was below a
  1908. long line.
  1909.  
  1910. Fixed ":split file" causing a "hit return" message.
  1911.  
  1912. Fixed core dump when screen is made bigger while in --more-- mode.
  1913.  
  1914. Fixed "@:" executing last Ex command without prepending ":".
  1915.  
  1916. Made Visual reselect work after "J" command.
  1917.  
  1918. Fixed problem that 'showcmd' would cause mappings to happen in the wrong mode.
  1919. e.g., ":map g 1G^M:sleep 3^M:g" would show ":1G".
  1920.  
  1921. Fixed problem when mapping ends in a character that start a key code; would
  1922. wait for other characters for each character.
  1923.  
  1924. The number of lines reported when starting to edit a file was one too much.
  1925.  
  1926. Fixed problem that in some situations the screen would be scrolled up at every
  1927. message and when typing <BS> on the command-line.
  1928.  
  1929. Removed the screenclear() calls for MS-DOS in fileio.c; some messages got lost
  1930. by it.  Just use CTRL-L to redraw the screen in the rare case that you get the
  1931. "insert disk b: in drive a:" message.
  1932.  
  1933. When doing ":/pat/p" on the last line without 'wrapscan' set, used to start in
  1934. line 1 anyway.  Now an error message is given and the command aborted.
  1935. Don't display "search hit bot" message twice for ":/pat/p" and overwrite it
  1936. with any error message.
  1937.  
  1938. When an error was detected in an Ex address (e.g., pattern not found), the
  1939. command was executed anyway; now it is aborted.
  1940.  
  1941. Fixed problem that after using Visual block mode, any yank, delete, and tilde
  1942. commands would still use the Visual coordinates.  Added "block_mode" variable.
  1943.  
  1944. Fixed not always redrawing correctly with ":unhide" command.
  1945.  
  1946. For Unix: Give error message when more than one file name given to Ex commands
  1947. that accept only one.
  1948.  
  1949. Fixed: When "+command" argument given to Ex command, wildcards in file name
  1950. after it were not correctly expanded.
  1951.  
  1952. Changed most calls to outstr() into msg_outstr(); makes screen output correct
  1953. for some cases; e.g., when using "!!cp file", the message for reading the
  1954. temporary file was messed up.
  1955.  
  1956. When out of memory because undo is impossible, and 'y' is typed in answer to
  1957. the 'continue anyway' question, don't flush buffers (makes Maze macros work on
  1958. MS-DOS).
  1959.  
  1960. Sometimes mappings would not be recognized, because the wrong flags in
  1961. noremapstr[] were checked.
  1962.  
  1963. Fixed problem with handling concatenated commands after expanding wildcards,
  1964. e.g., with ":e bu*c|ls".
  1965.  
  1966. Fixed problem with argument like '#' to a command like ":wnext" causing the
  1967. command not to do the right thing, depending on the file name.
  1968.  
  1969. Display file names with msg_outtrans(); control characters will be shown.
  1970. Also use transchar() for setting the window title and icon.
  1971.  
  1972. Fixed not resetting the yankbuffer when operator fails or is cancelled with
  1973. ESC (e.g., using "p" after ""ad<ESC>" would still use register 'a'.
  1974.  
  1975. When "[[" or "]]" is used without an operator, put cursor on begin of line.
  1976.  
  1977. Adjust Insstart when using CTRL-T and CTRL-D in Insert mode; would not be able
  1978. to backspace over some characters.
  1979.  
  1980. ":unhide" could redisplay some buffers at the wrong position; added call
  1981. to cursupdate() to enter_buffer().
  1982.  
  1983. Fixed freeing memory twice when opening of memfile fails.
  1984.  
  1985. After "z.", screen was displayed one line down compared to other positioning.
  1986.  
  1987. Fixed "%<" and "#<" in the command line not working.
  1988.  
  1989. Fixed two bugs in "2cc".  The auto-indent was taken from the last line instead
  1990. of the first.  When the cursor was on the last character in the line, it would
  1991. be positioned on the first char of the next line.
  1992.  
  1993. Fixed bug with doing "cc" on last few lines of the file; would delete wrong
  1994. line.
  1995.  
  1996. Fixed problem with formatting when char in column to break is a CTRL-M.
  1997. Replaced isspace() by iswhite().
  1998.  
  1999. Call starttermcap() in wait_return() only when redraw is done.  Moved calling
  2000. starttermcap() to avoid switching screens before calling wait_return().
  2001. Fixed calling wait_return() on the wrong screen if T_KS switches between two
  2002. screens.  Would hide the result of commands like ":!ls".
  2003.  
  2004. Fixed screen not being updated when a command typed in response to
  2005. wait_return().  Don't update screen when '/' or '?' typed, just like with ':'.
  2006. Fixed extra call to wait_return() when hitting "/<CR>".
  2007.  
  2008. When splitting window, don't copy scroll option from other window; avoids
  2009. "invalid scroll size" error message.
  2010.  
  2011. Adjusting marks for undo/redo was one line off.
  2012.  
  2013. Fixed extra space after cursor in Insert mode when 'wrap' is off and the
  2014. cursor is at the end of the line.
  2015.  
  2016. Fixed bug: In some cases with multiple windows, the 'tabstop' and 'list'
  2017. option of the wrong window would be used.
  2018.  
  2019. Fixed problem with char_avail() causing real_State to have the wrong value,
  2020. causing u_sync() to be called while in Insert mode, causing undo not to
  2021. function correctly.
  2022.  
  2023. Fixed horizontal scrolling not working properly when 'number' option set.
  2024.  
  2025. Fixed bug with automatic formatting: wouldn't wrap when there was only a
  2026. single non-blank in the first column.
  2027.  
  2028. Fixed problem of displaying the inverted area for Visual block mode.  Happens
  2029. when moving up-down stays in the same column in the line but the screen column
  2030. changes (e.g., when moving over a TAB).
  2031.  
  2032. Delete temp files from filter command when writing to the temp file fails.
  2033.  
  2034. When not being able to read the input in unix.c, could get an unexpected exit.
  2035. Added retry for 100 times and flush files before exit.
  2036.  
  2037. Fixed redisplaying problem: When ":" hit in wait_return(), a window would be
  2038. redrawn if it has the current buffer but is not the current window.  This
  2039. would result in the output of the ":" command being overwritten.
  2040.  
  2041. Don't give error messages for setting terminal options in vimrc for "vim -r".
  2042.  
  2043. When doing "2CTRL-^" if current buffer is 2, don't do anything (used to move
  2044. the cursor to another line).
  2045.  
  2046. Fixed horizontal scrolling problem with ":set nowrap ss=1 nu".
  2047.  
  2048. Fixed undo not working when using CTRL-V in Insert mode and automatic wrapping
  2049. occurs.
  2050.  
  2051. When setting terminal to raw mode, always do it.  Always set terminal to raw
  2052. mode after executing an external program.  Fixes problem when external program
  2053. unexpectedly switches terminal to cooked mode.  When terminal is in not-raw
  2054. mode, don't set it again, it causes problems.
  2055.  
  2056. ":[range]yank" moved the cursor; now it leaves it where it was.
  2057.  
  2058. When undoing ":[range]d", ":[range]>", or ":[range]<", put cursor on first
  2059. undone line.
  2060.  
  2061. Fixed abbreviations behaving tail-recursively.  Fixed abbreviations being
  2062. applied while inserting a register in Insert mode with CTRL-R.
  2063.  
  2064. Fixed "-- INSERT --" message being deleted when entering CTRL-R ESC in Insert
  2065. mode.
  2066.  
  2067. Fixed bug when 'showmode' on: When using CTRL-E in Visual mode the message
  2068. was deleted one out of two times.
  2069.  
  2070. Corrected use of CTRL-@ (NUL) in cmdline editing: Inserted a NL, now K_ZERO.
  2071.  
  2072. Fixed messages for CTRL-O in Insert mode; error messages for "CTRL-O :" were
  2073. overwritten.
  2074.  
  2075. Fixed wait-for-return when executing a filter command when 'autowrite' is set.
  2076. Don't redisplay the filter command, as it will be overwritten anyway.
  2077.  
  2078. When there is no file name and executing a filter command, don't use the file
  2079. name of the temporary file for the current file.
  2080.  
  2081. Fixed ":!!" not working.
  2082.  
  2083. Discovered that some versions of strchr() and strrchr() can't handle
  2084. characters above 127.  Made a Vim version of these functions.  Fixes problems
  2085. with special keys and mouse with DJGPP.
  2086.  
  2087. For DJGPP use _dos_commit() instead of dup()/close().
  2088.  
  2089. Removed the define VIM_ISSPACE, added vim_isspace(), which is always used.
  2090. It's not worth risking trying the compiler's isspace().
  2091.  
  2092. Removed NO_FREE_NULL defined, always use vim_free() instead of free().  There's
  2093. no need to take a risk by assuming that free() can handle NULL pointers.
  2094.  
  2095. Fixed not accepting '!' with ":file".  Fixed 'shortmess' set to 1 if setting
  2096. file name would fail.
  2097.  
  2098. Fixed: When Visual block mode started on an empty line, the block was always at
  2099. least two characters wide.
  2100.  
  2101. Fixed: Doing "*" on a special character (e.g., CTRL-K) would not work.
  2102.  
  2103. Renamed variable names that are keywords for some compilers: "new", "old",
  2104. "delete", and "class".
  2105.  
  2106. Fixed a few screen redisplay bugs: When opening a new line with "o" on the
  2107. last-but-one line in the last-but-one window, the next window would be
  2108. scrolled down one line.  When appending a character to the last line on the
  2109. screen, it would not get updated until after the second character typed.  When
  2110. deleting the last line in a window, the windows below it (or the status line)
  2111. would get scrolled up.
  2112.  
  2113. Fixed bug: Screen was scrolled two lines instead of one when cursor was moved
  2114. to one line above the top line (with 'so' = 0 and 'sj' = 0).
  2115.  
  2116. Fixed: ":mkexrc" didn't handle special keys in mappings correctly.
  2117. Add "version 4.0" to the start of the file generated with ":mkvimrc".
  2118. Add a backslash before a '"' for ":mkexrc" and ":mkvimrc".
  2119. Don't write 'endofline', 'scroll', and 'ttyfast' with ":mkvimrc" or ":mkexrc".
  2120. Fixed: ":mkvimrc" must put a backslash before a backslash for options values.
  2121. A mapping that contains a <NL> didn't work properly, now the "<NL>" is used
  2122. instead of a CTRL-V before the end of the line.  An option that contains a
  2123. <NL> needs a backslash.
  2124.  
  2125. Fixed other windows on the current buffer not being updated if undo resulted
  2126. in an unmodified buffer.
  2127.  
  2128. Fixed: When inserting chars in the last line on the screen, making it too long
  2129. to fit on the screen, it made the line disappear for a moment.
  2130.  
  2131. Fixed display not being redrawn at cursor position with ":buf 1".
  2132.  
  2133. Fixed putting a blank instead of a reversed blank between the file name and
  2134. the ruler in the status line when the file name was truncated.
  2135.  
  2136. Fixed: When doing "vlllu" with 'showcmd', the "-- VISUAL --" message would not
  2137. be deleted.
  2138.  
  2139. Give error message if lalloc() is called with a size <= 0.
  2140.  
  2141. If a mapping contains a CTRL-V in "from" or "to" part, don't interpret the
  2142. following bytes as terminal codes.  Makes mapping ":map q :s/hi ^V^V^H" work.
  2143.  
  2144. Unix: Fixed problem where an invalid setting for WINDOWID would cause Vim to
  2145. exit immediately.
  2146.  
  2147. Unix: Re-open stdout and stderr when executing a shell for command-line
  2148. completion.  Makes it work on Alphas and with bash.
  2149.  
  2150. Fixed problem with scrolling for hpterm (scroll reverse doesn't work as
  2151. expected).
  2152.  
  2153. Fixed bug: ":d 2" on last line in buffer gave "ml_get: invalid lnum" errors
  2154. and undo didn't work correctly.
  2155.  
  2156. Unix: When termio.h and termios.h are both present, use termios.h.
  2157.  
  2158. Message "[no write since last change]" for shell command was not put in column
  2159. 1.
  2160.  
  2161. Fixed bug: "Hit return to ..." message was overwriting the output of a shell
  2162. command when 'cmdheight' was bigger than 2.
  2163.  
  2164. Unix: Use utsname() if it is present for mch_get_host_name().
  2165.  
  2166. Fixed "?pat?e", "/pat/s-2", and "?pat?e+2" getting stuck on a match.
  2167.  
  2168. Only for Unix is the short file name used for reading/writing the file when
  2169. ":cd" has not been used.  On MS-DOS and Win32, a "cd" in a sub-shell also
  2170. changes the current directory for Vim, which causes the file to be written
  2171. in the wrong directory.
  2172.  
  2173. Fixed not removing the highlighted area when a buffer has several windows with
  2174. "v...y".
  2175.  
  2176. Made it possible to set number options to a negative number (for 'undolevels').
  2177.  
  2178. Fixed hang in Insert mode for using cursor keys that start with ESC with a
  2179. slow terminal, caused by using read with zero length.
  2180.  
  2181. Fixed a CTRL-W in Insert mode on the last line of the window causing a
  2182. scroll-up.
  2183.  
  2184. MS-DOS: Fixed a bug in msdos.c that wrote over the end of allocated memory
  2185. when expanding file names; could cause all kinds of problems.
  2186.  
  2187. Amiga: Sort each wildcard component separately, not all together.
  2188.  
  2189. Fixed serious performance problem: When abandoning a file, the freed memfile
  2190. blocks were not counted, causing all blocks to be flushed to disk after
  2191. abandoning more than 2Mb worth of files.
  2192.  
  2193. Fixed one-second delay between "Unknown options" and ": opt" for autocommand
  2194. errors.
  2195.  
  2196. After doing ":set term=name", output t_me and redraw the screen; makes any new
  2197. color settings work (just hitting CTRL-L doesn't do this).
  2198.  
  2199. When 'updatecount' was set to zero, every character typed would cause a
  2200. sync(), instead of not syncing at all.
  2201.  
  2202. Fixed display not updating correctly when joining lines, e.g., "v11jJ".
  2203. With ":join", leave cursor on first non-blank in the line.
  2204.  
  2205. Use #define SIZEOF_INT instead of sizeof(int) in fileio.c; avoids warning
  2206. "statement not reached" for some compilers.
  2207.  
  2208. Fixed obscure hang in mch_inchar() in unix.c.
  2209.  
  2210. Added a set of digraphs for HPUX.
  2211.  
  2212. When quickfix does not find a complete match, reset the line number to 0;
  2213. avoid a jump to a line that could have been any number in the output of the
  2214. 'makeprg'.
  2215.  
  2216. Fixed operator with "}", when end is on last line in the file and it's empty.
  2217. The last line was included instead of excluded.
  2218.  
  2219. Fixed bug:  When ":g/pat/d" resulted in an empty file, undo only put one line
  2220. back!  Could happen with many other operations that result in an empty file.
  2221.  
  2222. Changed exit status when shell cannot be executed from 127 to 122, some shells
  2223. (bash) are already using 127.  Makes error message "cannot execute shell"
  2224. disappear when in fact the command could not be executed, e.g., for ":!burp".
  2225.  
  2226. When there is no file name and executing a filter command, don't use the file
  2227. name of the temporary file for the current file.
  2228.  
  2229. Fixed "w" on last char in the file (not being an empty line) not beeping.
  2230.  
  2231. Fixed cursor not being positioned correctly, when resizing the window in
  2232. Normal mode and the cursor is on a TAB.
  2233.  
  2234. Give beep when trying to use "I" after an operator, without first moving the
  2235. cursor to the start of the line.
  2236.  
  2237. When listing options, check length of number options too, 'maxmapdepth' set to
  2238. 9999999 would show 999999.  Also account for replacing the home directory when
  2239. checking the length of expandable string options.
  2240.  
  2241. 'showmatch': Only show match when visible, not when 'wrap' off and match is
  2242. left or right of the screen.
  2243.  
  2244. Fixed: Message "freeing N lines" would cause a hit-return message when an
  2245. (error) message has been given before it.
  2246.  
  2247. Fixed bug: "(" would get stuck at a line ending in ".}".  "]" after line end
  2248. was not recognized.
  2249.  
  2250. Fixed reported problem with MS-DOS and Amiga when using more than 32000 lines;
  2251. replaced int with long in memline.c.
  2252.  
  2253. Fixed problem when using a negative count to a quickfix command, e.g.,
  2254. ":cn -1".
  2255.  
  2256. Give error message when extra argument given for ":cnext", ":cprevious", or
  2257. ":cc".
  2258.  
  2259. "@%" and "@." used register 0.  Now "@%" gives an error message and "@."
  2260. correctly executes the previously inserted text.
  2261.  
  2262. Fixed: "|j" moved cursor to last char in the line.
  2263.  
  2264. Fixed bug for MS-DOS: Expanding "~3" would make Vim hang.
  2265.  
  2266. When 'insertmode' set, don't give the warning "changing a readonly file" when
  2267. entering insert mode, but only when actually changing something.
  2268.  
  2269. Made deleting with "D" more efficient.  Was deleting one character at a time,
  2270. which is very slow for long lines.
  2271.  
  2272. When using the "-oN" command line option, make windows equal height after
  2273. loading the buffers.  "vim -o5 *.h" looked weird.
  2274.  
  2275. When there is no file name, ":rew", ":next", and others gave misleading error
  2276. message.
  2277.  
  2278. Fixed: When deleting text, start pos in col 0 and end pos in col 0, with last
  2279. character included, the yank became linewise.  This should not be done when
  2280. the movement is inclusive.
  2281.  
  2282. Changed: Only give "output not to a terminal" message when going to do
  2283. something full screen.  Don't ask to hit return for GUI help when output
  2284. doesn't come from or go to a terminal (for "vim -h | more").
  2285.  
  2286. Fixed: CTRL-Z/fg made windows equal height; should only be done when the
  2287. window height has changed.
  2288.  
  2289. Give error message for ":set tw=0,wrap"!
  2290.  
  2291. When checking for an existing file, don't use fopen(fname, "r"), but stat().
  2292. It's a bit faster and more reliable (e.g., when the file exists but it does not
  2293. have read permission).
  2294.  
  2295. When reading a script file, undo undoes everything that the script did (after
  2296. starting to edit the current file).
  2297.  
  2298. Command line completion: <Tab> just after non-alphabetic commands now expands
  2299. like there was a space after the command (e.g., :!<Tab>).
  2300.  
  2301. Unix: Don't accept expanded file names that don't exist.  Helps when using
  2302. /bin/sh (would expand "foo" to "foo\*").
  2303.  
  2304. Fixed: ":recover" didn't work correctly when cursor was not on line 1.
  2305. Also: Don't clear the current buffer when ":recover" runs into an error that
  2306. prevents recovering (e.g., when .swp file is empty).
  2307.  
  2308. Unix: When executing a filter command, switch terminal to cooked mode.  This
  2309. makes it possible that the filter can be killed with CTRL-C.  You might lose
  2310. typeahead on some systems.
  2311.  
  2312. When using CTRL-G in visual mode, show the file message until a key is hit.
  2313. Would be overwritten with the mode message immediately.
  2314.  
  2315. Fixed: ":unabbreviate" was before ":undo", should be the other way around,
  2316. because ":u" and ":un" mean ":undo".
  2317.  
  2318. Fixed: When using CTRL-L on the command line and there are several matches,
  2319. beep_flush() would be called, causing any mapped characters to be flushed.
  2320. This breaks the mapping ":cmap ^X ^L^D", that simulates tcsh's autolist
  2321. completion.
  2322.  
  2323. Fixed: Could enter numbers larger than 255 with CTRL-V{digits}.  Entering
  2324. CTRL-V256 would cause a crash a little later.
  2325.  
  2326. When writing a file with ":w!", always reset the 'readonly' option, not only
  2327. for Unix and not only when the file is not writable.  Changed error message
  2328. when trying to write a buffer with 'readonly' set to "'readonly' option is set
  2329. (use ! to override)".
  2330.  
  2331. Fixed: "gf" did an autowrite, even though no valid file name was found.
  2332.  
  2333. Fixed: ":so! $VAR/file" didn't work, although ":so $VAR/file" works.
  2334.  
  2335. Fixed: Putting non-alpha garbage after an option name in a ":set" command
  2336. wasn't recognized; e.g., with ":set ts-8".
  2337.  
  2338. Fixed: Would use NULL pointer in out-of-memory situtations in mf_alloc_bhdr().
  2339.  
  2340.  
  2341.  vim:ts=8:sw=8:js:tw=78:
  2342.